LoginSignup
1
1

More than 3 years have passed since last update.

入力された数値を素因数分解するコードをRubyでprimeライブラリを用いずに書いてみた

Last updated at Posted at 2019-11-21

はじめに

Rubyで、入力された数値を素因数分解するコードを書きました。

primeライブラリというライブラリを用いる方法もあるようですが、このライブラリを用いずに書かれたRubyでの素因数分解に関するコードがググっても案外見当たらなかったので、あえて用いずに書いたコードを下記に示します。

こちらの記事を参考にさせていただきました:C言語で素因数分解

書いたコード

(2019.11.22 @scivola さんから、無駄な記述や、無駄にforループを回してるところについてのご指摘をいただき、コードを修正しました。@scivola さん、ありがとうございます。)

prime_factorization.rb
prime_list = [] # 算出された素数を格納する配列

while true do
  print "素因数分解したい整数を入力してください:"
  num = gets.to_i
  if num < 2
    puts "2以上の整数にしてください!"
  else
    break
  end
end

print "#{num} = "
# 得られた素数を配列prime_listに格納
for i in 2..num
  while num % i == 0
    num /= i
    prime_list << i
  end
  break if num == 1 # 素因数分解が完了したらforループから抜ける
end

puts prime_list.join(" * ")

実行結果

素因数分解したい整数を入力してください:126
126 = 2 * 3 * 3 * 7
1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1