Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学 2011-05-11 R でエラトステネスの篩 の後半に,アトキンの篩のプログラムが掲載されている。 ご本人も「多分条件判定減らすとかしてRに合った実装しないとダメなんだと思う」というとおり,ベクトル化をはかる。ちなみに,元のプログラムでは for を避けるためか while で書いているがこれはほとんど意味がない。 limit = 10000000 で 23 秒かかっていたものが,書き直すと 0.4 秒ほどで計算終了ということになった。 プログラムは以下の通り。 atkin <- function(limit = 1e+06, return = FALSE) { sqrt.limit <- sqrt(limit) isprime <- logical(limit) for (z in
