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