簡単な演習として、素数ジェネレーターを作成することにしました。コードは非常に単純です。
static void generatePrimes (long min, long max)
{
bool[] prime = new bool[max + 1];
for (long i=2; i<max+1; i++)
prime [i] = true;
for (long i=2; i<max+1; i++) {
if (prime [i]) {
if (i>=min)
Console.WriteLine (i);
for (long j=i*2; j<max+1; j+=i)
prime [j] = false;
}
}
Console.WriteLine ();
}
1..10000 のような入力で問題なく動作します。ただし、max=1000000000 あたりで動作が非常に遅くなります。また、mono は約 1Gb のメモリを必要とします。私には、ちょっと奇妙に思えます: bool[1000000000] は、バイトではなく 1000000000 ビットを取るべきではありませんか? たぶん、私は愚かな間違いを犯しているのではないでしょうか?