埃拉托色尼筛选法求一定范围内自然数中的素数:
1、首先取得大于2的所有自然数的数列。
2、在数列中去掉所有大于2并且可以被2整除的数字,得到新数列。
3、在新数列中去掉所有比第一位大但是可以被第一位数整除的数字,得到新数列。
4、反复执行步骤3即可得到所有的素数。
#生成一个3开始的奇数数列
def odd_iter():
n = 1
while True:
n = n + 2
yield n
#过滤器
def prime_filter(n):
return lambda x:x % n > 0
#求素数
def prime():
yield 2
i = odd_iter()
while True:
n = next(i)
yield n
i = filter(prime_filter(n), i)