Eratosthenes筛网可帮助您找到低于特定极限的质数。并不能真正帮助您找到特定数字的因数。
如果您想这样做,我可以看到的最简单的方法是这样的:
def factors(n):
while n > 1:
for i in range(2, n + 1):
if n % i == 0:
n /= i
yield i
break
for factor in factors(360):
print factor
这基本上找到的最小因子n
(保证为质数),除以n
该数字,然后重复该过程直到n
等于1
。
输出为:
2
2
2
3
3
5
它们乘以原始数:
>>> from operator import mul
>>> reduce(mul, factors(360))
360