さんぽみち

なにか思いついたときとかに気まぐれに更新されます。

C#で Project Euler P10

問題

Problem 10 「素数の和」
10以下の素数の和は 2 + 3 + 5 + 7 = 17 である.

200万以下の全ての素数の和を求めよ.

Problem 10 - PukiWiki

方針

C#で Project Euler P3 - さんぽみち で作成した素数生成器を使って足していくだけ。

解答

using System;
using System.Linq;

public static class P10
{
    public static void Main()
    {
        Console.WriteLine(Calc());
    }
    
    private static ulong Calc()
    {
        return PrimeGenerator
            .GetPrimeList((index, prime) => prime < 2000000)
            .Aggregate((sum, prime) => sum + prime);
    }
}

PrimeGeneratorのソースは割愛。
計算量もあんまり書く意味がない気がするので割愛。
素数関係の問題は生成するのがメインで一回素数生成器作っちゃうと楽しめない。