在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

    以上是 在Python中检查数字是否为Primorial Prime 的全部内容, 来源链接: utcz.com/z/326664.html

    回到顶部