checkily 发表于 2018-3-6 12:18:38

python 49课,计算2000000以下的素数的和

import math
def 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()

生成器的用法

泰勒中值定理白 发表于 2018-4-3 21:48:45

学习一下

BlueSand 发表于 2018-4-19 07:33:34

用比他小的素数集合来除效率更高吧,反正你都要存更小的素数的
页: [1]
查看完整版本: python 49课,计算2000000以下的素数的和