どーも、みつおです。
やっと10問目に到達。素数の和とは優しい問題だ。
問題
10以下の素数の和は 2 + 3 + 5 + 7 = 17 である.
200万以下の全ての素数の和を求めよ.
出典:Problem10
解答
using System; using System.Collections.Generic; using System.Linq; namespace Problem10 { class Program { static void Main(string[] args) { Console.WriteLine(Solve()); Console.ReadLine(); } private static long Solve() { long ret = 0; int limit = 2000000; List<long> sosulist = new List<long>(); //素数のリストを作成 for(int i = 1;i <= limit; i++) { //素数判定 素数だったらリストに追加 if (IsSosu(i)) sosulist.Add(i); } //素数の和 ret = sosulist.Sum(); return ret; } private static bool IsSosu(long no) { bool ret = true; //数値が2未満(1)なら素数じゃない、2なら素数 if (no < 2) return false; else if (no == 2) return true; //数値が2で割り切れるなら素数じゃない if (no % 2 == 0) return false; //合成数xはp≦√xを満たす素因子pをもつ double sqrtno = Math.Sqrt(no); //奇数でループ for (int i = 3; i < sqrtno; i += 2) { //割り切れるので素数じゃない if (no % i == 0) return false; } return ret; } } }
出力
143042032112