如何使用最简单的python方法查找数字的因子

时间:2014-08-13 18:12:09

标签: python python-3.x

如何查找数字的所有因子并列出列表中的因子。

输入:

   >>>factors(72)

输出:

   [2, 2, 2, 3, 3]

我已经删除了一些代码,因为这会获得很多视图,这是一个硬件问题所以我不希望它被复制。

3 个答案:

答案 0 :(得分:1)

关于你的问题1:factoring is hard。这就是为什么它是许多加密算法的核心 - 我们目前还不知道快速计算大量数据的方法。

对于小数字,您的算法会这样做。对于稍微大一点的数字,我有same question ---显然 Pollard的Rho 是一个很好的算法。对于大数字,我们不知道。

现在问题2:

首先,在prime(n)功能中,您无需检查if n%i==0一直到n。您只需要将其检查到sqrt(n),因为如果有(a,b)个整数a * b = n,那么其中一个整数必然小于或等于{{} 1}}。因此,您只需要查看sqrt(n)。这为您节省了大量的计算费用。

这是您的sqrt(n)功能:

factors

答案 1 :(得分:1)

def factors(n):
a = []
x = 2
while x * x <= n :
    if n % x == 0:          
        a.append(x)
        n /= x
    else: x += 1
if n > 1: a.append(n)
return a
所有人都尽可能快地投票。

答案 2 :(得分:0)

这是使用质数分解的解决方案。它要快得多。

true

我创建了一个存储库:https://github.com/Pierre-Thibault/Factor