埃拉托色尼筛选法的原理很简单:
- 选取2为第一个素数
- 删除序列中2的倍数
- 更新序列中的第一个数字3,删除序列中所有3的倍数
- 更新序列中的第一个数字5,删除序列中所有5的倍数
- 如上所述,直到需求的范围内所有的数均删除或读取
代码如下:
<pre>
构造一个从3开始的可迭代序列
def odd_iter():
n = 1
while True:
n = n + 2
yield n
构造一个筛选函数
def _not_divisible(n):
return lambda x : x % n > 0
构造一个素数生成器
def primes():
yield 2
it = odd_iter() # 初始序列
while True:
n = next(it) # 返回序列的第一个数
yield n
it = filter(_not_divisible(n), it) # 构造新序列
</pre>
网友评论