Andy - 1 month ago 10
Ruby Question

# Method that returns 'n'th prime

First post here. I'll cut to the chase: why does this method work? I've been staring at it for the last hour trying to make sense of it, but I think what's confusing me is that there are just tons of variables.

Can anybody help explain it to me, perhaps line by line? Assume that is_prime?(i) is a previous method that tests if a certain number is a prime number. Thank you!

``````def nth_prime(n)

prime_num = 0

i = 2

while true
if is_prime?(i)
prime_num += 1
if prime_num == n
return i
end
end
i += 1
end
end
``````

Renaming some variables and starting at `current_number == 0` to make it clear we're going through every number one by one.

``````def nth_prime(n)

prime_count = 0  #keeps track of how many primes we have so far
current_num = 0  #current number we will go from 0..n

while true
if is_prime?(current_num)
prime_count += 1
if prime_count == n
return current_num
end
end
current_num += 1
end
end
``````

### What's going on?

As I say, we're going through all the numbers from `0` to `n` using a while-loop and `current_num += 1`.

If the `current_num` is prime our `prime_count` goes up by 1 which corresponds to the 1st prime etc. If the `prime_count` is then also equal to `n` we return `current_num` which will be the nth prime.

Source (Stackoverflow)