📅  最后修改于: 2023-12-03 15:22:47.363000             🧑  作者: Mango
勒让德猜想,又称为勒让德素数猜想,是一个关于素数分布的猜想。它由法国数学家勒让德在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 的整数,并判断是否为素数。若是素数,则判断该素数是否满足勒让德猜想,满足则返回该素数即可。