我有以下代码,我试图找到数字的最大素数因子,它是变量a的平方根。当我进行一些打印测试时,似乎我的迭代器不会增加。似乎代码只是无限运行。有小费吗?我错过了这个无限循环的观点吗?
import math
a = math.sqrt(600851475143)
primefactors = [0]
i=1
while i<=a:
if a%i == 0:
if i%2 != 0 and i%3 != 0 and i%4 != 0 and i%5 != 0 and i%6 != 0 and i%7 != 0 and i%8 != 0 and i%9 != 0:
primefactors.append(i)
print(primefactors)
i=i+1
编辑:刚刚意识到我使用a作为上限和测试值的错误。谢谢你的所有答案!
答案 0 :(得分:2)
a是775146.099225,所以a%i==0
永远不会是真的,所以即使你的迭代器工作(并且它对我有用),你也不会得到任何添加到素因子的东西。
答案 1 :(得分:0)
我要尝试的第一件事是在递增后在循环结束时打印出你的i变量并确保它递增。 你的程序应该循环775146次。这可能需要一些时间。我先尝试用较小的数字然后看看会发生什么。