思路:从2开始遍历数字,使用input函数输入求和范围,外循环求和,内循环判断是否为素数,由于是求m,n之间,还需要一个if语句判断是否满足范围
判断素数的思路:将遍历到的数除以之前找到的素数,用%判断是否等于0。因此还需要一个列表用于存放找到的素数。下面是代码
sum = 0
m,n = map(int,input().split())
if m == 1: #1不是素数
m = 2
prime = []
for x in range(2,n+1):
isprime = True
for k in prime:
if x%k == 0:
isprime = False
break
if isprime:
if x >= m:
sum += x
prime.append(x)
print(sum)
这里使用了一个布尔变量isprime = True 作用是标记此时的数为素数,其实可以更改为更好理解的形式(后面会修改)第一次内循环为空列表,不会执行,随着循环的进行,列表元素开始增多,进行素数判断,如果x此时为素数isprime不会改变。这里第二个if语句其实省略了if isprime == True。
下面是修改后的代码,删除了布尔变量,使用了python中特有的for else,更好理解这个代码
sum = 0
m,n = map(int,input().split())
if m == 1:
m = 2
prime = []
for x in range(2,n+1):
for k in prime:
if x%k == 0:
isprime = False
break
else:
if x >= m:
sum += x
prime.append(x)
print(sum)