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?
这里采用简单的办法求素数,不过还是要讲究一点效率:
1、2是唯一的偶数素数
2、所有比3大的素数可以表示为6k+1或者6k-1
3、判定一个数是否为素数的较快办法为从2到n的平方根,是否存在能整除n的因子,不存在则为素数。
def isPrime(n):
if n == 1:
return False
elif n < 4:
return True # 2,3 都是素数
elif n % 2 == 0:
return False # 除2外的偶数不是素数
elif n < 9 == 0:
return True # 到此只可能是7了,是素数。
elif n % 3 == 0:
return False # 使剩下的部分表示为6k加减1
else:
r = math.floor(math.sqrt(n))
f = 5 # 第一个6k-1
while f <= r:
if n % f == 0:
return False
if n % (f+2) == 0: # 6k-1+2成为6k+1
return False
f += 6 # 步伐6大跃进
return True
def the10001stPrime():
p = 1
count = 1
while count < 10001:
p += 2
if isPrime(p):
count += 1
return p