Hatena::Grouprubyist

Ruby初心者prinyの学習帳 RSSフィード

2009-01-14練習:たのしいRuby P.172 - 173

練習問題 (3)

16:25

数値 num が素数であるかを調べるメソッド prime?(num) を定義しましょう。

書いたもの

def prime?(num)
  # 小数は素数ではない
  if num.is_a?(Float)
    return false
  end
  
  # 2 より小さい整数は素数ではない
  if num < 2
    return false
  end
  
  # 1 とその数自身以外の約数を持つ 2 以上の整数は素数ではない(合成数)
  (2..Math::sqrt(num)).each {|i| 
    if num % i == 0
      return false
    end
  }
  
  # 2 以上の自然数で、かつ 合成数でないなら、素数
  return true
end

p prime?(2.1)
p prime?(1)
p prime?(2)
p prime?(997)
p prime?(9971)
p prime?(9973)

実行結果

false
false
true
true
false
true

単に「数値」と言われたとき、自分が入れそうなもの = 小数と整数 について判定できるようにしてみた。