一、算法思路
- 首先构建范围内从 2 开始的自然数,例如 20 以内的指数
- 取第一个数为第一个质数既 2,然后去除自然数序列中能被2整除的数
2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 - 取剩下数列中的第一个数既3为第二个质数,然后去除数列中能被3整除的数
3,5,7,9,11,13,15,17,19 - 继续去数列的第一个数既5为第三个质数,然后去除数列中能被5整除的数
- 依次类推,直到数列中没有数为止
二、代码
# Pythone 代码
def nums():
n = 1
while True:
n = n + 1
yield n
def judge(n):
return lambda x : x % n > 0
def primes():
it = nums()
while True:
n = next(it)
yield n
it = filter(judge(n), it)
for n in primes():
if n < 1000:
print(n)
else:
break