A Perfect Night For Bananafish

だがそれを語るには人生は短すぎる

素数判定

整数numが素数ならtrue、素数でなければfalseを返す。
2〜num-1でそれぞれnumを割って余りが0になったらfalseを返す。

def prime_simple?(num)
  if num<2
    return false
  end
  2.upto(num-1) { |i|
    if num%i==0
      return false
    end
  }
  return true
end

実際はnum-1まで試す必要はなく平方根まで計算すればよい。

def prime?(num)
  if num<2
    return false
  end
  2.upto(Math.sqrt(num)) { |i|
    if num%i==0
      return false
    end
  }
  return true
end

floorメソッドで平方根の整数部分を取り出した方が上のprime?(num)に比べて速い。

def prime_floor?(num)
  if num<2
    return false
  end
  2.upto(Math.sqrt(num).floor) { |i|
    if num%i==0
      return false
    end
  }
  return true
end