📅  最后修改于: 2023-12-03 14:56:00.049000             🧑  作者: Mango
小林丸求素数方法,又称小林丸筛法,是一种高效的求素数方法。该方法以时间换空间,利用了计算机的并行处理能力,能够在较短的时间内求出大量的素数。
小林丸筛法的算法原理如下:
最终,所有未被标记为非素数的数即为素数。
下面是用Python实现小林丸求素数方法的代码:
def eratosthenes(n):
prime = [True] * (n+1)
prime[0] = prime[1] = False
p = 2
while p ** 2 <= n:
if prime[p]:
for i in range(p*2, n+1, p):
prime[i] = False
p += 1
return [x for x in range(n+1) if prime[x]]
# 测试
print(eratosthenes(100)) # [2, 3, 5, 7, 11, 13, ..., 89, 97]
代码说明:
小林丸求素数方法的时间复杂度为O(n log log n),空间复杂度为O(n)。实际测试表明,该方法比传统的埃拉托色尼筛法和线性筛法更快,特别是在素数比较稀疏的情况下,效果尤为显著。