トップページに戻る
次の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
解説
エラトステネスのふるいを使ってます。