pythonif-statementrangeprimesfactoring

Python script to find nth prime number


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 even
        break
    elif (c % 2 !=0): #c is odd
        if c<7:
            a.append(c)
        elif c >=7:
            for i in range(3,int((c+1)/2)):
                if (c % i ==0):
                    break
            else:
                a.append(c)
    else:            
        c+=1
a[n]

Thanks! Andrew


Solution

  • 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 math
        start = 2
        count = 0
        while True:
            if all([start % i for i in range(2, int(math.sqrt(start)) + 1)]) != 0:
                count += 1
                if count == n:
                    return start
            start += 1 
    
    
    
    In [91]: nthprime(50)
    Out[91]: 229
    
    In [92]: nthprime(100)
    Out[92]: 541
    

    Tested with this.