Project Euler Problem 007

http://projecteuler.net/index.php?section=problems&id=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 10001st prime number?


10001番目の素数を調べる。


素数でない数はいずれかの素数で割れる。割れなければ素数
偶数の素数は2のみなので奇数だけ調べる。したがって2で割れるかどうかは調べなくてもよい。

import math

def primelist(l=1000):
    
    if l < 1:
        return []
    elif l == 1:
        return [2]
    
    result = [2, 3]
    x = 5
    while len(result) < l:
        limit = math.sqrt(x)
        
        it = iter(result);
        it.next()
        
        for i in it:
            if i > limit:
                result.append(x)
                break
            elif x % i == 0:
                break
        x += 2
    
    return result


print primelist(10001)[-1]


答え: 104743