📅  最后修改于: 2023-12-03 14:56:54.168000             🧑  作者: Mango
在计算机科学中,素数是指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数。例如,2、3、5、7、11、13、17、19等都是素数。
题目:给定一个数 num 和一个数 n,求 num 后第 n 个素数是多少?
例如,当 num = 10,n = 3 时,程序应该返回 17,因为10之后的素数是 11,13,17,19,23,29,31,37,41,43,47……第三个素数就是 17。
以下是一个 Python 的解法:
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def nth_prime_number(num, n):
count = 0
i = num + 1
while count < n:
if is_prime(i):
count += 1
if count == n:
return i
i += 1
return -1
以上代码中,我们定义了两个函数:
is_prime(num)
:用于判断一个数是否为素数,如果是素数,返回True,否则返回False。nth_prime_number(num, n)
:用于求 num 后第 n 个素数。我们从 num + 1 开始枚举每一个数,判断它是否是素数。如果是素数就计数,计数到第 n 个时,返回当前的数。在最后的返回语句中,如果遍历完所有的可能的数仍然没有找到第 n 个素数,返回 -1。这是为了防止出现错误,例如当输入的 n 值太大时,我们需要保证程序不会陷入死循环。
为了保证程序的效率,我们在判断一个数是否为素数时,只需要枚举到该数的平方根即可。因为如果一个数是合数,那么它一定可以由两个因数相乘得到,而其中一个因数必然小于或等于它的平方根。
以下是调用示例:
print(nth_prime_number(10, 3)) # 输出 17
print(nth_prime_number(100, 5)) # 输出 113
以上就是一个简单的给定数的第 n 个素数求解程序,欢迎大家拿来尝试。