詰めがあまい

一昨日はtoRuby 40th。もう40回もやったんだ。
この日は、toRubyで以前読んでいた本「たのしいRuby」の練習問題をやった。入力された数字が素数かどうかを判別する、prime?というメソッドを定義するという問題。以下は自分の解答。

def prime?(num)
  return false if num == 1
  2.upto(num-1) do |i|
    return false if num % i == 0
  end
  return true
end

とりあえずこれでも動くと思うのだけど、

  2.upto(num-1) do |i|

の部分が模範解答ではnumの平方根までになっていて、

  2.upto(Math.sqrt(num)){|i|

となっていた。

このへんが自分の詰めが甘い部分で、この時も8は1-8,2-4,4-2,8-1なんて頭に浮かんでいて、何か改良できそうだ、と思っているのに、「まぁいいか」と考えるのをやめてしまう。この例はずいぶん些細なことだけど、仕事でもtoRubyイベント、トークスでの発表や家事にいたるまで、もっと良くできただろう物も、「まぁいいか」で妥協で中途半端で終わらせていることが多い。あと一歩、ぐぐぐっと突っ込めると違うんだろうけど、と思いつつ、できないのもまた自分の実力なんだろう、と、ここでも「まぁいいか」で自分に妥協してしまう。駄目だなぁ。。。