前提・実現したいこと
完全数かどうかを判別するためのプログラムを書きたいです
Rubyを用いて入力された自然数が完全数かどうかを判別するためのプログラムは以下コードで"n="に数値を入れることで実現できました。ですが、
標準入力から値が渡される以下条件下のコードとなると分からなくなってしまいます。
N を 2 以上の整数とし、N の約数のうち N 自身を除いたものの和を S とする
N = S となるような N を完全数
・|N-S| = 1 となるような N を完全数に近いとする。
Q
N_1
...
N_Q
1行目には判定したい整数の個数 Q が入力される。
続く Q 行には整数 N_1, ..., N_Q が入力される。
・N_i が完全数であれば "完全数"
・N_i がほぼ完全数であれば "完全数に近い"
・どちらでもなければ "完全数でない"
入力例
3
28
16
777
出力例
完全数
完全数に近い
完全数でない
初学者でして初歩的な質問で申し訳ありません。
ご教授いただけるとありがたいです。
発生している問題・エラーメッセージ
出力例のように、入力例
3
28
16
777
出力例
完全数
完全数に近い
完全数でない
とならず、
完全数
完全数でない
までしか出力できません。
該当のソースコード
puts "自然数が完全数かどうかを判別します。" puts "自然数nを入力してください。" print "n=" number = gets.to_i sum=0 for i in 1..number-1 do if number%i==0 then sum+=i end end if number==sum then print "完全数" else print "完全数ではない。" end
上記のコードを参考に書いてみた
n = readlines.map(&:to_i) number = gets.to_i plus = 0 i = 1 begin if (number % i === 0) then plus = plus + i end ((i += 1) - 1) end while i < number if number == plus then puts "完全数" elsif puts "ほぼ完全数" else puts "完全数でない" end
この条件下では、line = readlines.map(&:to_i)を使おうか?
この条件下ではどうしたら良いのか?等
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。