回答編集履歴

1 補充

NCC1701

NCC1701 score 1268

2017/05/30 19:13  投稿

```ruby
per="perfect"
nei="neither"
nea="nearly"
num=gets.to_i
num.times do
   data=gets.to_i
  # p data
   hairetu=Array.new(data){|j| j+1 if data%(j+1)==0}.compact
  # p hairetu
   total=hairetu[0...-1].inject(:+)
 # p total
   totals=total+1
   if data==total
       puts per
   elsif data==totals
       puts nea
   else
       puts nei
   end
end
```
rubyには「イテレータ」というオブジェクトに対して繰り返し処理ができる概念があります。検索してみてください。
[リファレンスマニュアル](https://docs.ruby-lang.org/ja/2.2.0/doc/index.html)

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る