python 49课,计算2000000以下的素数的和
import mathdef is_primt(data):
for x in range(2,int(math.sqrt(data))+1): #一个数的素数集合不会超过他的平方根+1,例如100是由2*2*5*5组成,这里是为了减少for的循环次数,提高效率
if not data%x:
return False
else:
return True
def get_primt(data):
while True:
if is_primt(data):
yield data
data+=1
def sum_num():
result=0
for i in get_primt(2):
if i<2000000:
result+=i
else:
print(result)
return
if __name__=="__main__":
sum_num()
生成器的用法 学习一下 用比他小的素数集合来除效率更高吧,反正你都要存更小的素数的
页:
[1]