概要
アルゴリズムの問題で、1234567890
の数字の約数を求め、その約数が5000000以下の約数を全て足すというプログラムを作りたいです。
divisor
メソッドは約数の計算をしております。
for文では約数が5000000以下かどうかの条件分岐をしております。
これを実行すると、
ruby undefined method "<" for nil:NilClass (NoMethodError)
のエラーが出ます
仮説
- for文で範囲を指定するときに
result.length
としているが変数は使えない?
→適当な数値にすると実行される。
- ではこれを
result
という配列の中に入っている要素数分for文を回すにはどうすれば良いか?
ruby
1 2def divisor(num) 3 result = [] 4 i = 1 5 while i <= num do 6 remainder = num % i 7 if remainder == 0 8 result << i 9 end 10 i += 1 11 end 12 return result 13end 14 15sum = 0 16result = divisor(1234567890) 17 18for i in 0..result.length do 19 if result[i] < 5000000 20 sum += result[i] 21 end 22end 23 24puts sum 25
どなたかご教示いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。