用于对任何给定数字进行素数分解的程序

时间:2017-03-06 00:36:39

标签: python prime-factoring

n = 600851475143 
i = 2

while i * i < n:
    while n%i == 0:
        n = n / i
    i = i + 1

print (n)

这是python中的一个程序,它找到任何给定数字的最大素数因子。我想知道是否有办法修改它,以便人们可以找到所有主要因素而不是最大的因素。我在想,因为这个程序快速而整洁,有没有办法添加几行代码来改变我需要的东西,这是所有主要因素?

1 个答案:

答案 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