素数その2
奇数のみでやってみると当然半分くらい。
using System; using System.IO; namespace PN2 { class Program { const int MAX = 10000000; static readonly double SQRTMAX = Math.Sqrt(MAX); static readonly double TPS = TimeSpan.TicksPerSecond; static bool[] p; static void Main(string[] args) { var t0 = DateTime.Now.Ticks; p = new bool[MAX / 2];//初期化 for (var i = 1; SQRTMAX / 2 > i; i++) { if (!p[i]) { for (var j = i * 3 + 1; MAX / 2 > j; j += i * 2 + 1) { p[j] = true; } } } var t1 = DateTime.Now.Ticks; using (var sw = new StreamWriter("PN2.txt")) { sw.WriteLine(2);//2をお忘れなく for (var i = 1; MAX / 2 > i; i++) { if (!p[i]) { sw.WriteLine(i * 2 + 1); } } } var t2 = DateTime.Now.Ticks; Console.WriteLine((t1 - t0) / TPS); Console.WriteLine((t2 - t1) / TPS); } } }