重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

完全数とは,その数を除く約数の和がその数と等しい自然数のことである.
例えば,6 の約数は,1, 2, 3, 6 であるが,6 以外の約数の総和は
1 + 2 + 3 = 6 となるので,6 は完全数である.
標準入力から自然数 n を入力すると,
n 以上で最小の完全数 m を表示して改行し,
次の行に m の m 以外の約数を空白区切りで小さい順に表示する
ruby プログラムを作成せよ.

例えば,5 を入力した場合は
6
1 2 3
と表示し,100 を入力した場合は
496
1 2 4 8 16 31 62 124 248
と表示する.

A 回答 (2件)

とりあえず


http://www.mersenne.org/primes/
にある完全数のうち指定した数以上で最小のものを出力すればいいのではないかな.
    • good
    • 0

print("Number: ")


n = STDIN.gets.to_i

while(true)
factors = []
(1...n).each do |p|
factors.push(p) if n % p == 0
end
break if factors.inject(:+) == n
n += 1
end
puts n
print factors.join(" ")
puts
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!