【发布时间】:2015-05-04 14:40:02
【问题描述】:
我对 python 还是很陌生,我正在尝试将 600851475143 中的所有素数放入一个列表中。但是,我不断在列表中获得随机的数字,而不是素数。我不确定我哪里出错了。感谢您的宝贵时间
import math
factors_list = []
prime_factors = []
def number_factors(s):
s = int(math.sqrt(s))
for num in range(2, s):
for i in range(2, num):
if (num % i) == 0:
factors_list.append(num)
else:
prime_factors.append(num)
number_factors(600851475143)
print factors_list
print prime_factors
【问题讨论】:
-
这个算法有很大的问题。建议:在您的循环中添加一些打印语句,以查看您的算法产生的数字。在您确定您的代码在您可以手动检查的小数字上正常工作之前,不要尝试处理这个巨大的数字。在相关说明中,您可能会发现使用铅笔和纸来遵循您的算法很有帮助。
标签: python math primes prime-factoring