はじめに
入力した数字を素因数分解するアルゴリズムを作成します。
実行
入力するためのコードは次のようにします。
puts 数字を入力してください
x = gets.chomp.to_i
素因数分解の為に、別途数字を用意し、その数字で割り切れるかどうかを判別していきます。
割り切れる場合は1をプラスして、次の数字で判別します。
a = 2
puts 数字を入力してください
x = gets.chomp.to_i
ここでは、判定用の数字をaにします。
割り切れるかどうかの判定は次のようにします。
if x % a == 0
end
これで、xがaで割り切れるかどうかが判定できます。
今回は、配列を使用して最後に約数を表示させたいので、割り切れた場合は事前に用意していた配列に追加していきます。
answer = []
if x % a == 0
answer << a
end
今のままだと、同じ約数がひたすら追加されるだけなので、
割り切れたら元の数字を割る、割り切れなかったら次の数字で試す、
という操作を入れます。
if x % a == 0
answer << a
x = x / a
else
a += 1
end
これを元の数字が1になるまで続けます。
while x > 1
if x % a == 0
answer << a
x = x / a
else
a += 1
end
end
最後にpメソッドを使って表示させます(putsメソッドだと、改行されて結果が見にくくなることがあるので)
p answer
最終的なjコードは次のようになります。
a = 2
puts 数字を入力してください
x = gets.chomp.to_i
answer = []
while x > 1
if x % a == 0
answer << a
x = x / a
else
a += 1
end
end
p answer
試しに出力して、775249
と入力すると、[61,71,179]と出力されます。
色々改良可能なコードなので、色々試そうと思います。