Check if a number is Primorial Prime or not in Python


Suppose we have a number n, we have to check whether n is a primorial prime or not. A number is said to be a primorial prime when it is a prime number of the form pN# + 1 or pN# – 1 , where pN# indicates the primorial of pN such that the product of first N prime numbers.

So, if the input is like 29, then the output will be True as 29 is Primorial prime of the form pN - 1 if N=3, Primorial is 2*3*5 = 30 and 30-1 = 29.

To solve this, we will follow these steps −

  • MAX := 100000
  • prime := A list of size MAX and fill with True
  • arr := a new list
  • Define a function SieveOfEratosthenes() . This will take
  • for pri in range 2 to int(square root of (MAX)) + 1, do
    • if prime[pri] is same as True, then
      • for i in range pri * 2 to MAX, update in each step by pri, do
        • prime[i] := False
  • for pri in range 2 to MAX, do
    • if prime[pri] is non-zero, then
      • insert pri at the end of arr
  • From the main method, do the following −
  • if prime[n] is zero, then
    • return False
  • product := 1, i := 0
  • while product < n, do
    • product := product * arr[i]
    • if product + 1 is same as n or product - 1 is same as n, then
      • return True
    • i := i + 1
  • return False

Example

Let us see the following implementation to get better understanding −

 Live Demo

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))

Input

29

Output

True

Updated on: 27-Aug-2020

596 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements