/dev/Chiheb-Nexus

Solution de Projecteuler.net: Problème 7 (Python)

# Project Euler: Problem 7
#
# 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 10 001st prime number?
#
#################################
# Solution: 104759
# Best time: 0.03313493728637695
#################################

from time import time

def get_primes(limit):
    '''
        Implementation of Sieve algorithm
        Limit <= 10**8
    '''
    a = [True] * limit
    a[0] = a[1] = False
    for i, isprime in enumerate(a):
        if isprime:
            yield i
            for n in range(i*i, limit, i):
                a[n] = False

start = time()
limit, j = 10001, 2
while True:
    prime = list(get_primes(j))
    if len(prime) >= limit:
        break
    j*=9

elapsed = time() - start
print("Solution: {0} \t Time elapsed: {1}".format(prime[limit], elapsed))