先日解いた問題2[Ruby]
2問めは、「2から1000までの正の素数の出力」という出題
思ったやつを再度書いてみたが結果が特に出力されない
エラーはでないのだが、出力されない原因はわからない
i = 2
arr = []
while i >= 1000
(2..1000).each do |p|
if i % p == 0
arr.push(p)
end
end
if arr.length == 1
puts i
end
i = i + 1
end
上記のような記述をした
- iは判定する数値
- pはiを割る数値
- 2から1000なのでiが1000になるまで繰り返し
- 2から1000のpでiを割り、割り切れた場合は配列に格納する
- 配列の要素数が1つだった場合が素数であるとし、出力する
全くスマートじゃない
苦し紛れに書いた
どうやらwhileはtrueのときに繰り返し実行される模様
そのため思ったような出力がされないようである
for文で書き直してみる
for i in 2..1000 do
arr = []
(2..1000).each do |p|
if i % p == 0
arr.push(p)
end
end
if arr.length == 1
puts i
end
end
for文だとそれっぽいのが出力された
999回の処理を999回やる処理
非常に勉強不足であることがわかるコードである
勉強して書き直したい