# I Want To Fine 6th Prime Number. Why Execution Is Stuck After 3?

## 20 February 2022 - 1 answer

Q: By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. What is the 10001st prime number?

My code is:

``````def is_prime(num):
if all(num % i != 0 for i in range(2, num)):
return True
else:
return False

def find_nth_prime(nth):
lst_prime = []
num = 2
while len(lst_prime) < nth:
if is_prime(num):
lst_prime.append(num)
print(len(lst_prime), ":", lst_prime[-1])
num += 1
``````

When I try to run `find_nth_prime(6)` it get stuck after finding "3" as prime. What am I missing here?

In your if statement inside while loop it keeps repeating at `n=4` since `n +=1` never happens as 4 is not a prime. Therefore take it out of the if statement.

Try using https://pythontutor.com/. It helps you visualize your code

``````def find_nth_prime(nth):
lst_prime = []
num = 2
while len(lst_prime) < nth:
if is_prime(num):
lst_prime.append(num)
print(len(lst_prime), ":", lst_prime[-1])
num += 1
``````

Also you can do some improvments to your `is_prime` function. In that you don't have to take the whole range `(2, num)`. It is enough to take the range 2 to square root of num. `(2,int(num**0.5)+1)` or use `sqrt` from python's `math` library