我在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.可以有人发现错误吗?
答案 0 :(得分:2)
您的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
对于非常低的数字,这没关系,尽管你真的只需要检查数量的sqrt。