python入门,无法让迭代器工作

时间:2013-12-23 17:18:35

标签: python

我有以下代码,我试图找到数字的最大素数因子,它是变量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作为上限和测试值的错误。谢谢你的所有答案!

2 个答案:

答案 0 :(得分:2)

a是775146.099225,所以a%i==0永远不会是真的,所以即使你的迭代器工作(并且它对我有用),你也不会得到任何添加到素因子的东西。

答案 1 :(得分:0)

我要尝试的第一件事是在递增后在循环结束时打印出你的i变量并确保它递增。 你的程序应该循环775146次。这可能需要一些时间。我先尝试用较小的数字然后看看会发生什么。