素数その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);
		}
	}
}