裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

素数の個数

2015年12月31日 | ブログラミング

言語不問:素数の数を数えてください  締め切り:12月31日(木)

     AM10:00(12/31 10:01AM に予約投稿)

与えられた数字よりも小さい数字の中で、素数がいくつあるかを調べるプログラムを作ってください。

例えば以下のように数字が与えられます。

5
10

5よりも小さい数字で素数になるのは、2,3なので、素数は2個になります。

10よりも小さい数字で素数になるのは、2,3,5,7なので、素数は4個になります。

出力結果は

2
4

となります。

以前に,同じような問題を Java で解けというのがあったけど,そのときは gmp を使って無精した。
今回は,エラトステネスの篩を使ってプログラムを書いた。

mx = 100000
tbl = 1:mx
tbl[1] = 0
for (i in 2:floor(sqrt(mx))) {
    if (tbl[i]) {
        mx2 = mx %/% i
        tbl[2:mx2*i] = 0
    }
}
prime <- tbl[tbl > 0]
con=file("stdin", "r")
while (length(line <- readLines(con, 1)) > 0) {
    cat(paste(sum(prime < as.numeric(line)), "\n", sep=""))
}

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村