Okay, here's my slept-on-it version, with bonus wisdom gleaned from ungemmed. I succeeded in getting rid of the stored boolean and made the initial variable assignments a little less hackish. Hopefully. :)
def find_nth_prime(prime_to_find):
n = 1
primes = []
if prime_to_find < 1:
print "Please enter a number greater than zero."
return None
else:
while len(primes) < prime_to_find:
if len(primes) == 0:
primes.append(2)
print "%i is prime number #%i" % (primes[0], len(primes))
else:
root = math.sqrt(n)
for prime in primes:
if n%prime == 0:
break
elif prime > root:
primes.append(n)
print "%i is prime number #%i" % (n, len(primes))
break
n = n + 2
return primes[prime_to_find - 1]
no subject