yuuki blog

プログラミング をアプトプットしています。

Ruby 完全数を判別する

完全数とは

  • 自分自身を除く正の約数の和に等しくなる自然数のことです。
  • 完全数の最初の3個は 6 (= 1 + 2 + 3)、28 (= 1 + 2 + 4 + 7 + 14)、496 (= 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248) です。

  • たとえば、N = 28 のとき、28 の約数は 1, 2, 4, 7, 14, 28 なので、S = 1+2+4+7+14 = 28 となります。従って、28 は完全数です。 また、N = 16 のときには S = 1+2+4+8 = 15 となるので、16 はほぼ完全数です。

完全数の解き方

  • 約数を探す
  • 約数をすべて足し合わせる
  • 与えられた数字と比較する
puts "何回数えますか?"
n = gets.to_i
sum = 0

n.times do
  puts "値を入力してください"
  number = gets.to_i
  for i in 1..number - 1 do
    if number % i == 0
    sum += i
    end
  end
    if number == sum
      puts "完全数"
    elsif (number - sum).abs == 1
      puts  "ほぼ完全数"
    else 
      puts   "完全数ではない"
    end
    sum = 0
end