美文网首页
Python用fliter函数求素数

Python用fliter函数求素数

作者: 偷橘子的喵 | 来源:发表于2017-04-19 17:06 被阅读0次

常规方法:

def is_prime(n):
    for i in range(2,n):
        if n % i == 0:
            return False
    else:
        return True

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

for i in filter(is_prime,numbers()):
    if i < 100:
        print(i,end=' ')
    else:
        break

埃式筛法:

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

def not_divisible(n):
    return lambda x:x%n!=0


def primes():
    it = numbers()
    while True:
        n = next(it)   # 生成器numbers()的第一个数
        yield n
        it = filter(not_divisible(n), it)

for i in primes():
    if i < 100:
        print(i,end=',')
    else:
        break

相关文章

网友评论

      本文标题:Python用fliter函数求素数

      本文链接:https://www.haomeiwen.com/subject/sfjhzttx.html