算法思路:
一串数字2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
我们认为都是素数
1、取出最靠前的素数:2
由2开始向后,将所有2的倍数标记为不是素数。
得到 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2、寻找下一个未被标记的数 3
由3 开始向后,将所有3 的倍数标记为不是素数。
3、如此循环。
最终能得到一个范围之间所有数的状态。
代码
def sss(n):
k = [1 for i in range(n+1)]
for i in range(2, n+1):
if k[i]:
print(i)
for j in range(i, n+1):
if j % i == 0:
k[j] = 0
sss(200)
代码中,我们利用下标表示数本身,其中的内容表示是否为素数。