[.net core 3.1] 素数を数えて落ち着くんだ

落ち着くも何も、やることないので素数を数えてたよ。qiitaとかそういうところで検索したら最適解はゴロゴロ転がっているのだろうけど、一切見ずにwikipediaの下記ルールのみで書いた。色々と高速化についてはやりようがあるだろうしなー。例えば2以外の偶数は素数ではないとか、エラトステネスのふるいとか。俺はパッパラパーなので数学はわかりません!

ウィキペディア(Wikipedia): 素数
https://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0

素数(そすう、英: prime number)とは、1 より大きい自然数で、正の約数が 1 と自分自身のみであるもののことである。

とりあえず1000000までの素数を列挙する。

https://gist.github.com/dobusarai2016/227329547de90ba46559e0b2d943c148
result 00:02:25.6290352

2分25秒。おっそ!まあそりゃそうだが。ちなみにCPUはざっと最大でも20%使用くらい。

https://gist.github.com/dobusarai2016/f2dd95dce63d65d8430c9c831fec0537
result 00:00:55.3746587

55秒。死ぬほど雑で乱暴なコードだが非同期で並列処理を行ってみた。CPUは最大で90%使用していた。コードがアレだって?まあな。暇ならList<Task<string>>を作って回すとかでいいんじゃないの。アマプラでも見よう。