📜  勒让德猜想的Python程序(1)

📅  最后修改于: 2023-12-03 15:22:47.363000             🧑  作者: Mango

勒让德猜想的 Python 程序

勒让德猜想,又称为勒让德素数猜想,是一个关于素数分布的猜想。它由法国数学家勒让德在1797年提出,猜想认为:

对于任意正整数n,其下一个素数p一定满足:

$$n < p < n +\sqrt{n}+1$$

该猜想虽然在一定情况下被验证,但始终没有被证明或证伪。

下面我们就来实现一个 Python 程序,用于验证勒让德猜想。

实现过程

我们将实现一个函数 legrand_p(n),用于返回一个大于 n 的素数,它满足所提到的勒让德猜想。

思路

根据勒让德猜想,我们可以使用从 n+1 开始递增的方式去判断素数,一旦遇到一个素数,直接返回即可。需要判断素数时,使用 trial division 算法就可以了。

代码
import math

def is_prime(num):
    """判断是否为素数"""
    if num <= 1:
        return False
    sqrt_num = int(math.sqrt(num))
    for i in range(2, sqrt_num + 1):
        if num % i == 0:
            return False
    return True

def legrand_p(n):
    """勒让德猜想函数"""
    while True:
        n += 1
        if is_prime(n):
            if n > math.ceil(n + math.sqrt(n)) + 1:
                return n
print(legrand_p(50))  # 53
解析

上述代码中:

  • is_prime(num) 函数是经典的判断素数的方法,使用 trial division 算法,时间复杂度为 $O(\sqrt{n})$。
  • legrand_p(n) 函数中,我们使用一个 while 循环去逐个枚举大于 n 的整数,并判断是否为素数。若是素数,则判断该素数是否满足勒让德猜想,满足则返回该素数即可。