赞
踩
思路:从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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。