Ruby ループについて非常に基本的な質問があります。
このプログラムは、書かれているとおり、i 番目の素数 +1 を返します (つまり、この例では 17 を返す必要があります)。単純に を返すことができることはわかっcand-1
ていますが、ループの最後で答えが見つかったかどうかを確認し、見つからwhile
ない場合にのみインクリメントする「Ruby の方法」について疑問に思っていました。
def ith_prime(i)
pI = 0 # primes index
divs = []
cand = 2
until pI == i do
if divs.find { |div| cand%div == 0 } == nil
divs << cand
pI += 1
end
cand += 1
end
cand
end
puts ith_prime(7)
> 18