Python实现埃拉托色尼筛选素数

埃拉托色尼筛选法的原理很简单:

  1. 选取2为第一个素数
  2. 删除序列中2的倍数
  3. 更新序列中的第一个数字3,删除序列中所有3的倍数
  4. 更新序列中的第一个数字5,删除序列中所有5的倍数
  5. 如上所述,直到需求的范围内所有的数均删除或读取

代码如下:

构造一个从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) # 构造新序列

你可能感兴趣的:(Python实现埃拉托色尼筛选素数)