はじめに
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