-3

この問題を解決してコードを書こうとしましたが、うまくいきません。ブレークポイントを試してみましたが、うまくいっているようですが、うまくいきません..どこが間違っていますか?

10 番目のオイラー問題: 10 未満の素数の合計は 2 + 3 + 5 + 7 = 17 です。200 万未満のすべての素数の合計を見つけます。

私のJavaコード:

 public class Problem_010 {

public static void main(String[] args) {

    long sum = 0;
    boolean control = false;

        for (int i = 3; i < 2000000; i+=2) {
            control = true;
            for (int j = 2; j < i; j++) {

                if ((i % j) == 0) {
                    control = false;
                    break;
                }
            }
            if (control == true) {
                sum = sum + i;                  
            }
        }

    System.out.println("Sum: " + (sum+2));
}

}
4

2 に答える 2

4

コードは機能しますが、時間がかかります。素数を見つけるために、もっと良い方法があります。Atkin 1のふるいを見てみましょう。これは、特定の整数より小さい素数を見つけるために一般的に使用されるアルゴリズムです。


1アトキンのふるいは、エラトステネスのふるいの最適化バージョンです。@DennisMengが指摘しているように、後者も十分に高速であり、コーディングが容易になるはずです。

于 2013-07-30T17:28:46.677 に答える