Problem 7

Problem 7#

from project_euler import get_problem_description

get_problem_description(7)

By listing the first six prime numbers: $2, 3, 5, 7, 11$, and $13$, we can see that the $6$th prime is $13$.

What is the $10\,001$st prime number?

def prime_numbers(n):
    assert n >= 1

    numbers = []

    def store(number):
        numbers.append(number)
        return numbers[-1]

    yield store(2)

    cur_number = 3
    while len(numbers) < n:
        if all(cur_number % n != 0 for n in numbers):
            yield store(cur_number)
        cur_number += 1


assert [2, 3, 5, 7, 11, 13] == list(prime_numbers(6))


def last(it):
    for i in it:
        pass
    return i


last(prime_numbers(10_001))
104743