📜  Python同情 | sieve.search() 方法(1)

📅  最后修改于: 2023-12-03 14:46:43.088000             🧑  作者: Mango

Python同情 | sieve.search() 方法

在 Python 中,实现素数的搜索可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)。该算法可以通过检查质数的倍数来进行筛选,以找到素数的列表。

def sieve(n):
    """
    求小于等于n的素数列表
    """
    sieve = [True] * (n+1)
    sieve[0] = sieve[1] = False
    for i in range(2, int(n**0.5)+1):
        if sieve[i]:
            # 将所有i的倍数标记为非素数
            sieve[i*i: n+1: i] = [False] * ( (n - i*i) // i + 1 )
    return [i for i in range(n+1) if sieve[i]]

该代码块中的sieve.search()是该算法的主要部分,它使用列表推导式生成小于n的所有素数。在使用该方法时,我们必须为它提供一个上限值:即我们要查找哪个数字以下的素数。

以下是一个例子,其中我们要获取小于等于100的所有素数:

primes = sieve(100)
print(primes)

输出应该是:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

该算法既简单又有效,因此它是找素数的理想方法。如果你感到好奇,你可以浏览该算法的维基百科页面,以获取更详细的信息。