📜  给定数的第N个素数(1)

📅  最后修改于: 2023-12-03 14:56:54.168000             🧑  作者: Mango

给定数的第N个素数

在计算机科学中,素数是指在大于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 个素数求解程序,欢迎大家拿来尝试。