以下是一个用Python实现埃拉托斯特尼筛法的示例代码:
def sieve_of_eratosthenes(n):
# 创建一个布尔型数组,表示数字是否为质数,默认全部设置为True
is_prime = [True] * (n+1)
is_prime[0] = False
is_prime[1] = False
# 遍历数组,将所有的倍数标记为非质数
p = 2
while p * p <= n:
if is_prime[p]:
for i in range(p * p, n+1, p):
is_prime[i] = False
p += 1
# 返回所有质数的列表
primes = []
for i in range(2, n+1):
if is_prime[i]:
primes.append(i)
return primes
# 测试代码
n = 100
primes = sieve_of_eratosthenes(n)
print(primes)
这段代码实现了埃拉托斯特尼筛法,通过一个布尔型数组来标记数字是否为质数。首先初始化数组,将所有数字都标记为质数。然后从2开始遍历数组,将所有的倍数标记为非质数。最后遍历数组,将所有标记为质数的数字添加到结果列表中。
在上述示例代码中,我们给出了一个测试用例,n被设置为100,代码将输出1到100之间的所有质数。你可以根据需要修改n的值来测试其他范围的质数。
上一篇:埃拉托斯特尼筛法(使用链表)