在Python中检查数字是否为Primorial Prime
假设我们有一个数字n,我们必须检查n是否为原始质数。当数字是形式为pN#+1或pN#–1的质数时,该数字被称为本质质数,其中pN#表示pN的质数,使得前N个质数为乘积。
因此,如果输入像29,则输出将为True,因为29是形式为pN-1的Primorial素数,如果N=3,Primorial是2*3*5=30且30-1=29。
为了解决这个问题,我们将遵循以下步骤-
最大:=100000
prime:=大小为MAX并填充True的列表
arr:=一个新列表
定义一个功能SieveOfEratosthenes()。这将需要
对于pri范围2到int((MAX)的平方根)+1,
对于pri*2至MAX范围内的i,按pri的每一步进行更新,执行
prime[i]:=False
如果prime[pri]与True相同,则
对于pri在2到MAX范围内,请执行
在arr的末尾插入pri
如果prime[pri]不为零,则
从主要方法中,执行以下操作-
如果prime[n]为零,则
返回False
产品:=1,i:=0
当积<n时,做
返回True
产品:=产品*arr[i]
如果乘积+1与n相同或乘积-1与n相同,则
我:=我+1
返回False
示例
让我们看下面的实现以更好地理解-
from math import sqrt
MAX = 100000
prime = [True] * MAX
arr = []
def SieveOfEratosthenes() :
for pri in range(2, int(sqrt(MAX)) + 1) :
if prime[pri] == True :
for i in range(pri * 2 , MAX, pri) :
prime[i] = False
for pri in range(2, MAX) :
if prime[pri] :
arr.append(pri)
def check_primorial_prime(n) :
if not prime[n] :
return False
product, i = 1, 0
while product < n :
product *= arr[i]
if product + 1 == n or product - 1 == n :
return True
i += 1
return False
SieveOfEratosthenes()
n = 29
print(check_primorial_prime(n))输入值
29
输出结果
True