- 本記事はProjectEulerの「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
問題 7: 10001番目の素数
まずは自力で奇数を順番に生成した素数で割って行って求めてみます。実行時間約16秒。
import itertools
pn=[2]
for n in itertools.count(3,2):
for p in pn:
divd = (n%p == 0)
if divd: break
if not divd: pn.append(n)
if len(pn) >= 10001: break
print(f"Answer : {pn[-1]}")
安易ですが、前にも使ったsympyのnextprimeは,何番目か指定できるので一発で瞬時に求まりました。
from sympy import nextprime
print(f"Answer : {nextprime(1,10001)}")