project euler problem 7 https projecteuler netproblem7 10001st prime 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 references https en wikipedia orgwikiprimenumber checks to see if a number is a prime in osqrtn a number is prime if it has exactly two factors 1 and itself returns boolean representing primality of given number i e if the result is true then the number is indeed prime else it is not isprime2 true isprime3 true isprime27 false isprime2999 true isprime0 false isprime1 false 2 and 3 are primes negatives 0 1 all even numbers all multiples of 3 are not primes all primes number are in format of 6k 1 returns the nth prime number solution6 13 solution1 2 solution3 5 solution20 71 solution50 229 solution100 541 solution3 4 5 solution0 traceback most recent call last valueerror parameter nth must be greater than or equal to one solution17 traceback most recent call last valueerror parameter nth must be greater than or equal to one solution traceback most recent call last typeerror parameter nth must be int or castable to int solutionasd traceback most recent call last typeerror parameter nth must be int or castable to int checks to see if a number is a prime in o sqrt n a number is prime if it has exactly two factors 1 and itself returns boolean representing primality of given number i e if the result is true then the number is indeed prime else it is not is_prime 2 true is_prime 3 true is_prime 27 false is_prime 2999 true is_prime 0 false is_prime 1 false 2 and 3 are primes negatives 0 1 all even numbers all multiples of 3 are not primes all primes number are in format of 6k 1 returns the n th prime number solution 6 13 solution 1 2 solution 3 5 solution 20 71 solution 50 229 solution 100 541 solution 3 4 5 solution 0 traceback most recent call last valueerror parameter nth must be greater than or equal to one solution 17 traceback most recent call last valueerror parameter nth must be greater than or equal to one solution traceback most recent call last typeerror parameter nth must be int or castable to int solution asd traceback most recent call last typeerror parameter nth must be int or castable to int
import math


def is_prime(number: int) -> bool:
    

    if 1 < number < 4:
        
        return True
    elif number < 2 or number % 2 == 0 or number % 3 == 0:
        
        return False

    
    for i in range(5, int(math.sqrt(number) + 1), 6):
        if number % i == 0 or number % (i + 2) == 0:
            return False
    return True


def solution(nth: int = 10001) -> int:
    

    try:
        nth = int(nth)
    except (TypeError, ValueError):
        raise TypeError("Parameter nth must be int or castable to int.") from None
    if nth <= 0:
        raise ValueError("Parameter nth must be greater than or equal to one.")
    primes: list[int] = []
    num = 2
    while len(primes) < nth:
        if is_prime(num):
            primes.append(num)
            num += 1
        else:
            num += 1
    return primes[len(primes) - 1]


if __name__ == "__main__":
    print(f"{solution() = }")