素数加法程序循环

时间:2015-08-22 22:01:23

标签: python python-2.7 loops for-loop

我正在尝试编写一个程序来确定前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()

它不会打印任何内容。循环肯定有问题,我可能是怎么写的。似乎只做第一个号码然后停止。

3 个答案:

答案 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

我使用这些更改测试了您的代码并且运行正常。