在写100以内质数和的时候整体思路是第一个for循环遍历2到100的数,内部循环与每个数做取余运算。
如果余数为0,就不是质数,break结束循环。如果不为0,就是质数,做加法。
但是结果明显偏大,因为会多次打印同一个质数
sum = 0
for i in range(2,100):
for j in range(2,i):
if i%j == 0 :
break
else:
#print(i)
sum += i
查询修改之后,把else和外层for循环放在同一缩进,结果是正确的。python也确实有for...in...elsed的用法。
print(sum)
sum = 0
for i in range(2,100):
for j in range(2,i):
if i%j == 0 :
break
else:
#print(i)
sum += i
print(sum)
但是,我之前学Java的时候,没用过if和else拆开的写法。很不习惯,所以修改程序如下。多加入一个状态变量。可以是0,1也可以是TRUE or FALSE等。
sum = 0
n=0#状态变量
for i in range(2,100):
n=0#注意n的初始化,一定要在大循环内,不能在小循环中
for j in range(2,i):
if i%j == 0 :
n=1
if n==0:
sum += i
print(i)
print(sum)