言語不問:素数の数を数えてください 締め切り: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=""))
}