n = 600851475143
i = 2
while i * i < n:
while n%i == 0:
n = n / i
i = i + 1
print (n)
这是python中的一个程序,它找到任何给定数字的最大素数因子。我想知道是否有办法修改它,以便人们可以找到所有主要因素而不是最大的因素。我在想,因为这个程序快速而整洁,有没有办法添加几行代码来改变我需要的东西,这是所有主要因素?
答案 0 :(得分:2)
这是一个简单的整数因子程序:
Python 2.7.5+ (default, Sep 17 2013, 15:31:50)
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def factors(n):
... f, fs = 2, []
... while f * f <= n:
... if n % f == 0:
... fs.append(f)
... n = n / f
... else:
... f = f + 1
... fs.append(n)
... return fs
...
>>> factors(600851475143)
[71, 839, 1471, 6857]
有更好的方法来计算整数,但这足以让你开始。如果您对使用素数进行编程感兴趣,我会在我的博客上谦虚地推荐this essay。