一种统计素数的方法

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))

你可能感兴趣的:(一种统计素数的方法)