2017-11-28 2 views
0

だから私は10,001の素数を見つけようとしています。はい、オイラー#7の問題です。私が書いたコードは3から10,001までのすべての素数を私に与えるように見えるが、私の答えはまだ間違っている。私はこれについて他の質問があることを知っているが、誰か他のコードを盗むことは私が学ぶのを助けない。だから私はどこでこれに間違っていたのかについての洞察を求めている。まず、すべての奇数を切り離してリストに追加しました。私はリストに素数のいくつかの正方形があることに気づいたので、2から10,0001までのあらゆる数の正方形に対してリストをチェックします。それは素数だけで私を残しているはずですが、私はまだ間違った答えを得ています。どんなアイデアもありがとうございます1と10001の間の最高の素数は何ですか

prime = [i for i in range(2, 10002) if i % 2 != 0] 

for i in range(2, 10002): 
    if i * i in prime: 
     prime.remove(i * i) 

print(prime[-1]) 
+4

15は正方形ではありません。 –

+1

10001番目の素数、または10001未満の最大素数を見つけようとしていますか?彼らは別の問題です。 –

+0

私は10001番目の素数を塗りつぶそうとしています。 – fallenangel226

答えて

2

7 * 11 = 77のケースを試しましたか?すべての既知の素数の倍数を検索する必要があるときは、完全な正方形だけを探しています。 Project Eulerのテーマに沿って、私はあなたに答えを与えるつもりはありませんが、私はSieve of Eratosthenesを指摘できます。

実際には...これは早い段階の問題なので、私はスポイラーに夢中になるでしょう。

素数のリストを作成し、[2,3,5]に初期化します。 n = 8から始まり、毎回6ずつ増加するにつれて、2からあなたの数の平方根までの既知の素数に対するモジュロをテストすることによって、素数に対してn-1およびn + 1をチェックする。

+0

そういう数字は決して私の頭を越えたことはありません。ヒントやリンクもありがとう – fallenangel226

関連する問題