微信扫一扫

028-83195727 , 15928970361
business@forhy.com

素数生成器

python trade2016-06-04

#!/usr/bin/python3
#coding=utf-8

__author__ = 'xdlove'

'素数生成器'

#奇数生成器(不包括1)生成的是一个无限序列

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

#过滤因子---

def filter_not_prime(n):
    return lambda x : x % n #返回闭包

#生成素数序列

def primes():
    yield 2
    it = odd_list()
    while True:
        n = next(it)
        yield n
        it = filter(filter_not_prime(n),it)

#遍历素数生成器

for i,x in enumerate(primes()): # enumerate迭代遍历键值对(索引:素数)
    if i > 5:
        break
    else:
        print(x)