据数论的知识可知,任何一个合数都可以写成几个质数相乘的形式,这几个质数都叫做这个合数的质因数。例如:24=2×2×2×3。现在从键盘输入一个正整数,请编程输出它的所有质因数。 输入: 从键盘输入一个正整数n,n<100000。 输出: 输出该整数的所有质因数。
时间: 2024-12-20 10:21:00 浏览: 9
C++数论基础 C++数论基础 C++数论基础.pptx
在Python中,你可以使用以下算法来解决这个问题:
```python
def prime_factors(n):
i = 2
factors = []
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n) # 如果还有大于i平方的质因子,直接添加
return factors
# 输入部分
n = int(input("请输入一个正整数 (小于100000): "))
# 输出部分
if n > 1:
print(f"数字 {n} 的质因数有: {prime_factors(n)}")
else:
print(f"{n} 是质数")
```
这个程序的工作原理是不断尝试将输入的数`n`除以当前较小的质数`i`(初始时为2),如果能整除,则将`i`加入到质因数列表中,并用`n`除以`i`的结果更新`n`,直到`i`的平方大于`n`为止。如果最后`n`还大于1,说明`n`本身也是一个质因数。
阅读全文