Pierpont Prime

A Pierpont Prime is a prime number of the form p = 2l.3k + 1. First few Pierpont prime numbers are 2, 3, 5, 7, 13, 17, 19, 37, 73, 97, 109, …

Given a number n, the task is to print Pierpont prime numbers less than n.

Examples:

Input : n = 15
Output : 2 3 5 7 13

Input : n = 200
Output : 2 3 5 7 13 17 19 37
73 97 109 163 193

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The idea is to find numbers having factor of power of 2 and 3 only. Now using Sieve of Eratosthenes find all prime number. Finally, print the common number of both the sequence.

Below is implementation of this approach:

C++

 // CPP program to print Pierpont prime // numbers smaller than n. #include using namespace std;    bool printPierpont(int n) {         // Finding all numbers having factor power      // of 2 and 3 Using sieve     bool arr[n+1];     memset(arr, false, sizeof arr);      int two = 1, three = 1;     while (two + 1 < n) {         arr[two] = true;         while (two * three + 1 < n) {             arr[three] = true;             arr[two * three] = true;             three *= 3;         }         three = 1;         two *= 2;     }        // Storing number of the form 2^i.3^k + 1.     vector v;     for (int i = 0; i < n; i++)         if (arr[i])             v.push_back(i + 1);            // Finding prime number using sieve of     // Eratosthenes. Reusing same array as     // result of above computations in v.     memset(arr, false, sizeof arr);     for (int p = 2; p * p < n; p++) {         if (arr[p] == false)             for (int i = p * 2; i < n; i += p)                 arr[i] = true;     }        // Printing n pierpont primes smaller than n     for (int i = 0; i < v.size(); i++)          if (!arr[v[i]])              cout << v[i] << " "; }    // Driven Program int main() {     int n = 200;     printPierpont(n);     return 0; }

Java

 // Java program to print Pierpont prime // numbers smaller than n. import java.util.*; class GFG{ static void printPierpont(int n) {      // Finding all numbers having factor power      // of 2 and 3 Using sieve     boolean[] arr=new boolean[n+1];     int two = 1, three = 1;     while (two + 1 < n) {         arr[two] = true;         while (two * three + 1 < n) {             arr[three] = true;             arr[two * three] = true;             three *= 3;         }         three = 1;         two *= 2;     }        // Storing number of the form 2^i.3^k + 1.     ArrayList v=new ArrayList();     for (int i = 0; i < n; i++)         if (arr[i])             v.add(i + 1);         // Finding prime number using sieve of     // Eratosthenes. Reusing same array as     // result of above computations in v.     arr=new boolean[n+1];     for (int p = 2; p * p < n; p++) {         if (arr[p] == false)             for (int i = p * 2; i < n; i += p)                 arr[i] = true;     }        // Printing n pierpont primes smaller than n     for (int i = 0; i < v.size(); i++)          if (!arr[v.get(i)])              System.out.print(v.get(i)+" "); }    // Driven Program public static void main(String[] args) {     int n = 200;     printPierpont(n); } } // this code is contributed by mits

Python3

 # Python3 program to print Pierpont  # prime numbers smaller than n.    def printPierpont(n):        # Finding all numbers having factor      # power of 2 and 3 Using sieve     arr = [False] * (n + 1);     two = 1;     three = 1;     while (two + 1 < n):          arr[two] = True;         while (two * three + 1 < n):             arr[three] = True;             arr[two * three] = True;             three *= 3;                    three = 1;         two *= 2;        # Storing number of the form 2^i.3^k + 1.     v = [];     for i in range(n):         if (arr[i]):             v.append(i + 1);         # Finding prime number using      # sieve of Eratosthenes.      # Reusing same array as result     # of above computations in v.     arr1 = [False] * (len(arr));     p = 2;     while (p * p < n):         if (arr1[p] == False):             for i in range(p * 2, n, p):                 arr1[i] = True;         p += 1;            # Printing n pierpont primes     # smaller than n     for i in range(len(v)):          if (not arr1[v[i]]):              print(v[i], end = " ");    # Driver Code n = 200; printPierpont(n);    # This code is contributed by mits

C#

 // C# program to print Pierpont prime  // numbers smaller than n.  using System; using System.Collections;    class GFG{  static void printPierpont(int n)  {      // Finding all numbers having factor power      // of 2 and 3 Using sieve      bool[] arr=new bool[n+1];      int two = 1, three = 1;      while (two + 1 < n) {          arr[two] = true;          while (two * three + 1 < n) {              arr[three] = true;              arr[two * three] = true;              three *= 3;          }          three = 1;          two *= 2;      }         // Storing number of the form 2^i.3^k + 1.      ArrayList v=new ArrayList();      for (int i = 0; i < n; i++)          if (arr[i])              v.Add(i + 1);         // Finding prime number using sieve of      // Eratosthenes. Reusing same array as      // result of above computations in v.      arr=new bool[n+1];      for (int p = 2; p * p < n; p++) {          if (arr[p] == false)              for (int i = p * 2; i < n; i += p)                  arr[i] = true;      }         // Printing n pierpont primes smaller than n      for (int i = 0; i < v.Count; i++)          if (!arr[(int)v[i]])              Console.Write(v[i]+" ");  }     // Driven Program  static void Main()  {      int n = 200;      printPierpont(n);  }  }  // this code is contributed by mits

PHP



Output:

2 3 5 7 13 17 19 37 73 97 109 163 193

This article is contributed by Anuj Chauhan. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

My Personal Notes arrow_drop_up

Improved By : Mithun Kumar

Article Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.