python 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
时间: 2025-03-06 21:45:00 浏览: 64
### Python 实现正整数分解质因数
为了实现将一个正整数分解成其质因数的功能,可以采用多种方法。下面展示一种简单而有效的方法来完成这一任务。
#### 方法一:迭代方式分解质因数
这种方法利用了质数的特性,从最小的质数2开始尝试除尽给定的整数,直到无法再被整除为止,接着增加试除的数值继续上述过程直至原数完全被分解[^1]。
```python
def decompose_prime_factors(number):
factors = []
divisor = 2
while number > 1:
while number % divisor == 0:
factors.append(divisor)
number //= divisor
divisor += 1
formatted_output = f"{aa}=" + "*".join(str(factor) for factor in factors)
return formatted_output
if __name__ == "__main__":
aa = int(input("请输入一个正整数: "))
result = decompose_prime_factors(aa)
print(result)
```
此代码段定义了一个名为`decompose_prime_factors` 的函数接收参数 `number`, 并返回字符串形式的结果表示输入数字等于各个质因子相乘的形式。当脚本作为主程序运行时会提示用户输入想要分解的正整数,并调用该函数处理后输出结果[^2]。
#### 方法二:优化后的迭代算法
考虑到效率问题,在实际应用中通常不会让divisor无限制增长而是设定合理的上限比如sqrt(n)+1, 同样也可以只考虑奇数从而减少不必要的计算次数。这里给出一段更高效的版本:
```python
import math
def optimized_decomposition(num):
prime_factors = []
# Handle the case of dividing by 2 separately to make subsequent steps faster.
while num % 2 == 0:
prime_factors.append(2),
num //= 2
# Check odd numbers up to sqrt(num).
limit = int(math.sqrt(num)) + 1
for i in range(3, limit, 2):
while (num % i == 0):
prime_factors.append(i)
num //= i
if num > 2:
prime_factors.append(num)
output_string = str(aa)+"="+ '*'.join(map(str,prime_factors))
return output_string
if __name__ == '__main__':
aa=int(input('Enter an integer greater than one: '))
res=optimized_decomposition(aa)
print(res)
```
这段改进版不仅提高了性能还保持了良好的可读性和简洁性。
阅读全文
相关推荐



















