0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

素因数分解アルゴリズム(Ruby)

Posted at

はじめに

入力した数字を素因数分解するアルゴリズムを作成します。

実行

入力するためのコードは次のようにします。

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]と出力されます。
色々改良可能なコードなので、色々試そうと思います。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?