📅  最后修改于: 2023-12-03 15:11:26.880000             🧑  作者: Mango
本程序使用Eratosthenes筛法来寻找从1到N的所有质数。Eratosthenes筛法是一种高效的算法,其思想是从2开始,将每个质数的倍数都标记为合数,直到所有数字都被筛选过。
def primes(n):
"""
打印从1到N的所有质数
:param n: 质数最大范围
"""
prime = [True] * (n + 1)
p = 2
while p * p <= n:
if prime[p]:
for i in range(p * 2, n + 1, p):
prime[i] = False
p += 1
for p in range(2, n + 1):
if prime[p]:
print(p)
本程序定义了一个primes函数,其中n为打印的最大范围。程序使用一个布尔数组来跟踪每个数字是否为质数。首先假设所有数字都是质数,然后从2开始往上遍历每个数字,如果该数字为质数,则将其所有倍数都标记为合数。这样,最终得到的布尔数组中,为True的数字即为素数,打印即可。
我们以n=20为例进行演示,执行以下代码:
primes(20)
输出如下:
2
3
5
7
11
13
17
19
即从1到20的所有质数。