エラトステネスの篩はもう古い !?
タイトルは親父ギャグじゃねーです !
ゆっちさんがこんな記事を書いていたようで。
ゆっちのBlog » Java8 時代の素数の求め方
最初はそのままパクらせていただいて動かしていました(それでもなかなかに早い)が、地味に無駄な処理があることに気がつきました。
boxed
して collect
してる部分がそれです。IntStream
のままでも count
メソッドで個数は確認できるので、以下のように修正してみました。あと、秒未満の処理時間は細かい数値はいらないと思ったのでミリ秒単位で切って表示させてます。
Stream API を用いた並列化された素数検出プログラム
実行時に他のプロセスが動いてたりするとアレですが、一応の目安として
1973815 個の素数を検出しました。 0 時間 0 分 32 秒 914
と、期待される結果と共に、家の非力なマシンでも 30 秒そこそこで処理が完了する*1ことがわかりました。Java8 すげぇ。
*1:オリジナル版だと 1 分ちょい掛かる