Ruby 素数であるかを判定する

Ruby 素数であるかを判定する

Rubyで、素数であるかを判定するソースコードを記述してます。基本的に「2」から順番に割っていき、割り切れたら素数以外で、割り切れなかったときは素数となるので、これを関数化して使用します。

環境

  • OS windows11 home
  • ruby 3.1.3p185

素数であるかを判定

素数であるかを判定するには、
1. まず「1」は素数でないで「false」を返す
2.  「2」であれば偶数なので「true」を返す
3. 後は「2」から順番に割り算して余りがなければ割り切れるので割り切れたら「false」を返す
4. 最後まで割り切れなかった場合は「true」を返す
ことで可能です。

実際に、判定してみます。

def isPrime(num)
  if num == 1
    return false
  elsif num == 2
    return true
  else
    for i in 2..num
      if num % i == 0
        return false
      end

      if i + 1 == num
        return true
      end
    end
  end
end

p isPrime(997) # true
p isPrime(998) # false
p isPrime(999) # false

判定されていることが確認できます。

ライブラリ「prime」を使用

ライブラリ「prime」を使用して判定することも可能です。

gem install prime

判定してみます。

require "prime"

puts Prime.prime?(997) # true
puts Prime.prime?(998) # false
puts Prime.prime?(999) # false

また、ライブラリ「prime」は以下のように指定した範囲に存在する素数を出力することもできます。

require "prime"

Prime.each(10).each { |prime|
  p prime
}

# 2
# 3
# 5
# 7