Python - prime numbers



我正在用python创建一个程序,它将所有素数的总和加起来,直到10。到目前为止我的代码是:

total = 0
for i in range (10):
    for a in range (2,i):
        if i % a == 0:
            break
        else:
            total += i
            break
print total

我的代码不包括2作为质数,但确实包括9。有人能发现这个错误吗?

您的else:子句需要与for循环而不是if语句和break
如前所述,2立即通过,这是完全可以的,因为它是素数,并且执行else子句:

total = 0
for num in range(2, 10):      # Start from 2
    for i in range(2, num):
        if num%i==0:
            break             # Not prime, break causes else clause not to be executed
    else:
        total += num
print total
17

对于非常小的数字,这将是好的,尽管您实际上只需要检查到num的根号。

最新更新