一种统计素数的方法
2018-06-08 本文已影响58人
52_St
import math
def sieve(size):
# 初始化一个待判断统计列表,用于表示该位置的索引是否为素数
sieve = [True] * size
# 众所周知,0和1都不是素数,所以为False
sieve[0] = False
sieve[1] = False
# 循环找到所有的非素数,赋值False
for i in range(2, int(math.sqrt(size)) + 1):
k = i * 2
while k < size:
sieve[k] = False
k += i
# 统计所有为True的元素个数,也就是素数的个数
return sum(1 for x in sieve if x)
# 一千亿之内的素数个数
# 4118054813
print(sieve(100000000000))