📌  相关文章
📜  国际空间研究组织 | ISRO CS 2017 |问题 62(1)

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

国际空间研究组织 | ISRO CS 2017 |问题 62

这道问题目标是给定一个数字,找到它的下一个素数。

思路

首先需要明确什么是素数:素数是只能被1和本身整除的数字。为了找到下一个素数,我们需要一个函数 is_prime() 来判断一个数字是否为素数。之后,我们可以通过循环不断将找到下一个大于给定数字的素数为止。

def is_prime(num):
    if num < 2: # 小于2的数不是素数
        return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True

def next_prime(num):
    num += 1
    while not is_prime(num):
        num += 1
    return num
解释

函数 is_prime(num) 接收一个数字 num,如果该数字小于2,则不是素数,返回 False;如果该数字有其他因子,也不是素数,返回 False;如果该数字没有其他因子,则是素数,返回 True

函数 next_prime(num) 接收一个数字 num,将其自增1,直到找到一个素数为止,然后将该素数返回。

示例
>>> next_prime(7)
11
>>> next_prime(121)
127
>>> next_prime(300)
307

##结论

以上是一个简单的寻找下一个素数的算法,考虑到效率,对于一个非常大的数字,其中可能有一些优化的方法,我们可以寻找那些与当前数字的差最小的素数,而不是逐个判断素数。