欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用Python3生成质数列表

程序员文章站 2022-07-03 12:06:43
...

遵循埃氏筛法的思想,使用filter函数和生成器生成给定自然数内的质数(又称素数)列表。

本文章总结自廖大的python教程

 

1. 首先直接生成奇数列表,因为2作为最小的质数,显然所有大于2的偶数都将被排除。

def odd_generator():
    n = 1
    while True:
        n += 2
        yield n

 

2. 生成筛选函数。

def not_divisible(n):
    return lambda x: x % n > 0

注意,此函数返回的是一个匿名函数,而不是某个具体的值。单独调用此函数的正确方式是 not_divisible(2)(10),返回False。

 

3. 生成质数生成器。

def primes():
    n = 2
    it = odd_generator()

    while True:
        n = next(it)
        yield n
        it = filter(not_divisible(n), it)

 

4. 在给定自然数范围内生成质数列表。

for n in primes():
    if n < 1000:
        print(n)
    else:
        break