エラトステネスのスティーブを使用して、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評価を使って実験したいです。特に問題には興味がありませんが、遅延評価については、実験を行うためにこの問題を完全にランダムに選択しました。
アイドル状態でPython2.7を使用していますが、これは重要ではありません。何が起こるかを理解することが重要です。