トップページに戻る    次のC#のサンプルへ    前のC#のサンプルへ

Problem10 200万以下の全ての素数の和

問題

10以下の素数の和は2 + 3 + 5 + 7 = 17である.
200万以下の全ての素数の和を計算しなさい.


ソース

using System;
using System.Linq;

class Program
{
    //const int TargetVal = 10;
    const int TargetVal = 2000000;

    static void Main()
    {
        var SosuuArr = new int[TargetVal + 1];
        for (int I = 1; I <= TargetVal; I++) {
            SosuuArr[I] = I;
        }

        SosuuArr[1] = 0;
        for (int I = 2; I <= TargetVal; I++) {
            if (SosuuArr[I] != 0) {
                for (int J = SosuuArr[I] * 2; J <= TargetVal; J += SosuuArr[I]) {
                    SosuuArr[J] = 0;
                }
            }
        }
        long SumVal = 0;
        foreach (int EachInt in SosuuArr.Where(X => X != 0)) {
            SumVal += EachInt;
        }
        Console.WriteLine(SumVal);
    }
}


実行結果

142913828922


解説

エラトステネスのふるいを使ってます。