📅  最后修改于: 2023-12-03 14:46:43.088000             🧑  作者: Mango
在 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]
该算法既简单又有效,因此它是找素数的理想方法。如果你感到好奇,你可以浏览该算法的维基百科页面,以获取更详细的信息。