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