列出所有的质数 python using generators

Posted c1111111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列出所有的质数 python using generators相关的知识,希望对你有一定的参考价值。

一般储存一系列数据可以用list,但是如果数据量很大的时候这样会很占用内存。因此除了普通的函数以外,还有一种generator的方式。标志语句为yield。
题目要求:
Write a generator, genPrimes, that returns the sequence of prime numbers on successive calls to its next() method: 2, 3, 5, 7, 11, ...
分析:
这里要想如何生成质数。一般若x为质数,则x%p != 0(p为之前所有的质数)
初次写的代码:

def genPrimes():
    primelist = [2,]
    yield 2
    num = 3
    flag = 0
    while True:
        for p in primelist :
            if (num%p) == 0 :
                flag = 1
        if flag == 1 :
            flag = 0
            num += 1
        else :
            yield num
            primelist.append(num)
            num += 1
    

除了这种写在一起的方式,还可以单独写一个函数来判读是否为质数。

other solution

def genPrimes():
    n = 1
    primesList = []
    while True:
        n += 1
        if all(n % i != 0 for i in range(n-1, 1, -1)):
            primesList.append(n)
            yield n
def genPrimes(): 
    from itertools import count as cnt
    pl = [2]
    return (pl.append(i) or pl[-2] for i in cnt(3,2) if all(i%p for p in pl))





以上是关于列出所有的质数 python using generators的主要内容,如果未能解决你的问题,请参考以下文章

需要两个办法,100以内找出质数?

Learning string similarity measures for gene/protein name dictionary look-up using logistic regressi

列出小于等于某个数的全部质数

c语言使用循环找出100之内的所有质数

查找质数直到一个数字

Gantt/BTS 生产计划电子看板甘特图