【发布时间】:2014-07-25 20:36:19
【问题描述】:
我的最新代码中有一个问题,我完全不知道如何解决。基本上,我打印出前 1000 个素数 - 但我的代码打印出的素数远远超出了前 1000 个素数的限制。我在我的代码中指定在 1000 处停止。这是我的代码:
import itertools
counter = 1
while (counter <= 1000):
for i in itertools.count(start=3, step=1):
for a in range(2, i/2):
if (i % a == 0):
break
else:
print i
counter += 1
我真的不知道如何解决这个问题。有人可以帮忙吗?
解决方案
我通过在 else 块中添加这段代码来修复此代码:
if (counter == 1000):
sys.exit()
【问题讨论】:
-
您的 break 语句只破坏了
for a in range(2, i/2)循环,而不是它上面的循环。所以for i in itertools.count(start=3, step=1)循环继续进行。 -
@BradBeattie 这是设计使然,这是正确的。问题是他们需要第二个
break才能摆脱更大的循环。 -
-
感谢 unutbu - 会这样做的