実現したいこと
pythonで素数を生成するジェネレータを作りたいです
エラトステネスの篩と無限イテレータを使っています
素数を生成するはずが生成された数列は2, 3, 4となってしまいます
エラーは発生していません
該当のソースコード
python2
1# coding: utf-8 2 3import itertools 4 5def gen_prime(): 6 primes = itertools.count(2) 7 8 while True: 9 p = next(primes) 10 primes = itertools.ifilter(lambda x: x % p != 0, primes) 11 yield p 12 13p = gen_prime() 14for _ in range(3): 15 print(next(p)) # 2, 3, 4
試したこと
python2
1primes = itertools.ifilter(lambda x: x % p != 0, primes) 2primes, tmp = itertools.tee(primes) 3list(itertools.islice(tmp, 10))
とすると最初の10個は素数になるが27(合成数)が出てくるようになる
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/24 10:39
2021/06/24 10:44
2021/06/24 11:09
2021/06/24 11:15