Python用fliter函数求素数

常规方法:

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 博主刚写了一篇Luogu T1125的解题报告,里面涉及到欧拉筛法。本篇博文会介绍一些素数筛法和素数验证法。博主的...
    DarkKris阅读 1,278评论 0 1
  • 秦本会坐在河边钓鱼,前两天水是绿色的,这两天换了颜色,变成了黑色的。秦本会看着那一盒的污水,心情有点黑。虽然他在这...
    小眼睛大鼻子阅读 419评论 0 0
  • 那是一个雨天,风微微,吹在皮毛上很舒服。 我懒洋洋的躺在洞中,十分惬意。这时,朋友小A突然到访,与我说,“我刚从洞...
    魔影千风阅读 266评论 0 0
  • 1. 公众号运营 现状:运营了8个月,虽然依旧保持一周3篇的频率,但是粉丝不涨了,阅读量也降低了。 不足:文章质量...
    小恩叨逼叨阅读 368评论 0 2