python 求指定数中质数(素数)数量

前端之家收集整理的这篇文章主要介绍了python 求指定数中质数(素数)数量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

质数,又称素数,指在大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数)。比1大但不是素数的数称为合数。1和0既非素数也非合数。素数在数论中有着非常重要的地位。

求质数代码

import math

def sieve(size):
    sieve = [True] * size
    sieve[0] = False
    sieve[1] = False
    for i in range(2,int(math.sqart(size)) + 1):
        k = i *2
        while k < size:
            sievep[k] = False
            k += i
    return sum(1 for x in sieve if x)
    
print sieve(10000000000)

>>> 455052511

其他方法

@numba.jit()
def cur(size):
    sieve = [True] * size
    sieve[0] = False
    sieve[1] = False
    if size == 2:
        return sieve
    factor = [index for index, val in enumerate(cur(int(math.sqrt(size)+1))) if val]
    for i in factor:
        k = i * 2
        while k < size:
            sieve[k] = False
            k += i
    return sieve
 
def up(size):
    sieve = cur(size)
    return sum(1 for x in sieve if x)


猜你在找的Python相关文章