私自身が表題の問題を解いた時のプログラムについて解説します。
問題の詳細は「スーパー素数」(CodeIQ)を参照してください。
スーパー素数問題
仕様
標準入力で指定された数値を元に N 番目のスーパー素数を表示してください。
スーパー素数とは
スーパー素数とは素数の数列の素数番目の要素で構成される数列である。
例
3, 5, 11, 17, 31, 41, 59, 67, 83, 109, 127, ...
標準入力
【例】
- 数値(1-2017)の範囲の整数が入力されます
1
標準出力
【例】
- 標準入力番目のスーパー素数を出力する
3
その他の仕様
・標準入力の末尾には改行があります
・標準出力の末尾に改行をつけてください
・標準入力の仕様で説明した内容以外の入力は行われません(不正入力に対するチェックは不要)
Samples
Sample1
標準入力
1
標準出力
3
Sample2
標準入力
3
標準出力
11
Sample3
標準入力
5
標準出力
31
Rubyで解答しています。
#!/usr/bin/ruby require 'prime' def getPrime(n) return Prime.each.take(n).last end while line = gets line.strip! if line.empty? then next end p getPrime(getPrime(line.to_i)) end
この出題者の問題としては異色な感じがします。
Rubyには素数ライブラリがあるので簡単です。
入力値を数値に変換し、getPrime()でその番号の素数を求め、さらにその結果から素数を求めて印字します。
n番目の素数を返します。
Rubyは素数ライブラリがあるのでn個の素数を求め、その最後を返すだけで終わりです。