我正在尝试编写一个程序来确定前1000个素数的总和。
def main():
sum = 0
numberOfPrimes = 0
divcount = 0
for number in range(1,10000):
for divider in range (1,(number/2) + 1):
if number%divider == 0:
divcount += 1
else:
divcount += 0
if divcount == 1:
sum += number
numberOfPrimes += 1
break
else:
sum += 0
numberOfPrimes += 0
break
if numberOfPrimes == 1000:
print sum
return
main()
它不会打印任何内容。循环肯定有问题,我可能是怎么写的。似乎只做第一个号码然后停止。
答案 0 :(得分:0)
break
语句退出当前循环。阅读它的工作原理...... http://www.tutorialspoint.com/python/python_break_statement.htm
有关素数总结的工作示例,请参见此处...... https://codereview.stackexchange.com/questions/37550/summation-of-primes-takes-forever
答案 1 :(得分:0)
当您使用break
时,您将退出' for'环。只是摆脱这些并且你很好!
编辑:您需要重置divcount
位于'的顶部。循环。
答案 2 :(得分:0)
您需要删除break语句,否则程序将在第一个数字后停止运行。 break
退出当前循环。
在打印前1000个素数的总和后,您还应该添加break
语句。
最后,需要为每个新号码重置divcount
变量。
for number in range(1,10000):
divcount = 0
我使用这些更改测试了您的代码并且运行正常。