Python如何运行此函数以获得100个素数

时间:2015-10-11 17:34:03

标签: python

我想要运行此代码:

def genPrimes():
    primes = []   # primes generated so far
    last = 1      # last number tried
    while True:
        last += 1
        for n in primes:
            if last % n == 0:
                break
    else:
        primes.append(last)
        yield last
n = genPrimes()

如何实现此功能以返回100个素数列表?

3 个答案:

答案 0 :(得分:4)

这是一台发电机。如果你更正了缩进,你可以在for循环中使用它,或者使用islice来获得前100个素数:

from itertools import islice

def genPrimes():
    primes = []   # primes generated so far
    last = 1      # last number tried
    while True:
        last += 1
        for n in primes:
            if last % n == 0:
                break
        else:
            primes.append(last)
            yield last

primes = list(islice(genPrimes(), 100))

答案 1 :(得分:1)

尝试:[n.next() for x in range(100)]

答案 2 :(得分:1)

这段代码有点神秘。我也认为它没有做任何事情。

你的其他东西是附属于你的,只有在你休息时才能执行。聪明但神秘。但是,您将列表初始化为[],然后执行循环。循环遍历空列表会跳过循环体,这意味着中断将永远不会执行。由于中断永远不会执行,因此生成器永远不会产生任何效果。

因此,这是一个无效的循环。