我尝试使用 Eratosthenes 的史蒂夫在 Python 中创建所有素数的流。但是,我得到一个错误。
这是我尝试过的:
def genPrimes0(N):
if (isPrime(N)):
yield [N]
filter(lambda x: N%x[0] == 0, genPrimes0(N+1))
else:
genPrimes0(N+1)
P = genPrimes0(2)
这是控制台:
>>> ================================ RESTART ================================
>>>
>>> P.next()
[2]
>>> P.next()
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
P.next()
StopIteration
>>>
任何的想法 ?
编辑:
我想要递归。我想用 LAZY 评估做一个实验。不是特别对这个问题感兴趣,而是对懒惰的评估感兴趣——我完全随机地选择了这个问题来做实验。
我正在使用带有 Idle 的 Python 2.7,但这并不重要。了解会发生什么很重要。