📅  最后修改于: 2023-12-03 14:52:50.789000             🧑  作者: Mango
素数是指只能被1和本身整除的正整数。在计算机科学中,有时需要检查第n个素数。本文将介绍如何在python中检查第n个素数。
暴力枚举法是一种简单但不高效的算法来检查素数。该方法通过枚举2到n-1之间的所有整数来检查n是否为素数。如果在这之间找到一个整数i,使得n能够整除i,则n不是素数。
def is_prime(n):
"""
检查n是否为素数
"""
if n <= 1:
return False
elif n == 2:
return True
else:
for i in range(2, n):
if n % i == 0:
return False
return True
def nth_prime(n):
"""
检查第n个素数
"""
count = 0
i = 2
while count < n:
if is_prime(i):
count += 1
prime = i
i += 1
return prime
上述代码通过从2开始枚举数值来查找第n个素数。is_prime()函数用来检查一个数是否为素数,nth_prime()函数用来查找第n个素数。由于通过枚举来查找素数,因此此方法不适用于查找大素数。
这种算法的基本思想是,在2到n-1之间所有的整数中,我们先找到一个素数p,然后去掉所有2p,3p,4p...直到np。剩下的所有数中,再找到最小的素数q,重复上述过程,直到找到第n个素数。
def nth_prime(n):
"""
检查第n个素数
"""
primes = []
num = 2
while len(primes) < n:
is_prime = True
for p in primes:
if num % p == 0:
is_prime = False
break
if is_prime:
primes.append(num)
num += 1
return primes[-1]
上述代码使用筛选法来查找第n个素数。primes列表存储已经查找到的素数,从2开始枚举数值。在每次枚举时,我们遍历primes中所有的素数,如果num能够除以任何一个素数p,则说明num不是素数,跳过此循环。如果能够枚举到num是素数,则将其添加到primes列表中,继续查找下一个素数。
这篇文章介绍了如何在python中检查第n个素数,方法包括暴力枚举法和筛选法。一般来说,筛选法更快且更适用于查找大素数。