I'm new to Python and I thought I'd try to learn the ropes a bit by writing a function to find the nth prime number, however I can't get my code to work properly. No doubt this is due to me missing something fundamental, but I'd appreciate your help in finding where it went wrong!
c=2
n=input("Which prime would you like? ")
n=int(n)
a=[]
l=len(a)while l<=n:if c==2:a.append(c)elif (c % 2 ==0): #c is evenbreakelif (c % 2 !=0): #c is oddif c<7:a.append(c)elif c >=7:for i in range(3,int((c+1)/2)):if (c % i ==0):breakelse:a.append(c)else: c+=1
a[n]
Thanks!
Andrew
This can be a start. This checks whether the number N is divisible by all numbers from 2
to int(sqrt(N)) + 1
, where the int
function truncates the square root of N. The all()
function in python returns True
if all members of a list satisfy some condition (here not zero). You should set an upper bound as this is not very efficient for really large n
. I'll leave that to you.
def nthprime(n):import mathstart = 2count = 0while True:if all([start % i for i in range(2, int(math.sqrt(start)) + 1)]) != 0:count += 1if count == n:return startstart += 1 In [91]: nthprime(50)
Out[91]: 229In [92]: nthprime(100)
Out[92]: 541
Tested with this.