# 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<``int``> 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.