それで、30分間髪を抜いた後、私はこの問題の助けを求めてSOに来ることにしました。
10未満の素数の合計は2+3 + 5 + 7=17です。
200万未満のすべての素数の合計を求めます。
今、私は問題をどのように行うかを知りたくありません-それは簡単です-そして特に答えではありません。コードを実行したときに、コードが正しい答えを表示しない理由を知りたいです(C#):
using System;
using System.Collections.Generic;
public class Euler010 {
public static bool isPrime(Int64 n) {
if (n <= 1)
return false;
if (n < 4)
return true;
if (n % 2 == 0)
return false;
if (n < 9)
return true;
if (n % 3 == 0)
return false;
Int64 r = (Int64)Math.Floor(Math.Sqrt((double)n));
Int64 f = 5;
while (f <= 4) {
if (n % f == 0)
return false;
if (n % (f + 2) == 0)
return false;
f += 6;
}
return true;
}
public static void Main() {
Int64 sum = 2;
for (Int64 n = 3; n <= 2000000; n+=2) {
if (isPrime(n)) {
sum += n;
}
}
Console.WriteLine(sum);
Console.ReadLine();
}
}
に実行するとn <= 10
、必要に応じてを出力します17
。手作業で計算しやすいものに実行すると、正解が出力されます(n <= 20
->など77
)。
しかし、これを実行すると、666667333337
間違った出力が表示されます。
何か案は?