# Prime Triplet

• Difficulty Level : Medium
• Last Updated : 31 Aug, 2022

Prime Triplet is a set of three prime numbers of the form (p, p+2, p+6) or (p, p+4, p+6). This is the closest possible grouping of three prime numbers, since one of every three sequential odd numbers is a multiple of three, and hence not prime (except for 3 itself) except (2, 3, 5) and (3, 5, 7).

Examples :

```Input : n = 15
Output : 5 7 11
7 11 13

Input : n = 25
Output : 5 7 11
7 11 13
11 13 17
13 17 19
17 19 23```

A simple solution is to traverse through all numbers from 1 to n-6. For every number, i check if i, i+2, i+6, or i, i+4, i+6 are primes. If yes, print triplets.

An efficient solution is Sieve of Eratosthenes to first find all prime numbers so that we can quickly check if a number is prime or not.
Below is the implementation of the approach.

## C++

 `// C++ program to find prime triplets smaller` `// than or equal to n.` `#include ` `using` `namespace` `std;`   `// function to detect prime number` `// here we have used sieve method` `// https://www.geeksforgeeks.org/sieve-of-eratosthenes/` `// to detect prime number` `void` `sieve(``int` `n, ``bool` `prime[])` `{` `    ``for` `(``int` `p = 2; p * p <= n; p++) {`   `        ``// If prime[p] is not changed, then it is a prime` `        ``if` `(prime[p] == ``true``) {`   `            ``// Update all multiples of p` `            ``for` `(``int` `i = p * 2; i <= n; i += p)` `                ``prime[i] = ``false``;` `        ``}` `    ``}` `}`   `// function to print prime triplets` `void` `printPrimeTriplets(``int` `n)` `{` `    ``// Finding all primes from 1 to n` `    ``bool` `prime[n + 1];` `    ``memset``(prime, ``true``, ``sizeof``(prime));` `    ``sieve(n, prime);` `    `  `    ``cout << ``"The prime triplets from 1 to "` `          ``<< n << ``"are :"` `<< endl;` `    ``for` `(``int` `i = 2; i <= n-6; ++i) {`   `        ``// triplets of form (p, p+2, p+6)` `        ``if` `(prime[i] && prime[i + 2] && prime[i + 6])` `            ``cout << i << ``" "` `<< (i + 2) << ``" "` `<< (i + 6) << endl;`   `        ``// triplets of form (p, p+4, p+6)` `        ``else` `if` `(prime[i] && prime[i + 4] && prime[i + 6])` `            ``cout << i << ``" "` `<< (i + 4) << ``" "` `<< (i + 6) << endl;` `    ``}` `}`   `int` `main()` `{` `    ``int` `n = 25;` `    ``printPrimeTriplets(n);` `    ``return` `0;` `}`

## Java

 `// Java program to find prime triplets` `// smaller than or equal to n.` `import` `java.io.*;` `import` `java.util.*;`   `class` `GFG {` `    `  `// function to detect prime number` `// here we have used sieve method` `// https://www.geeksforgeeks.org/sieve-of-eratosthenes/` `// to detect prime number` `    ``static` `void` `sieve(``int` `n, ``boolean` `prime[])` `    ``{` `        ``for` `(``int` `p = ``2``; p * p <= n; p++) {` `    `  `            ``// If prime[p] is not changed,` `            ``//then it is a prime` `            ``if` `(prime[p] == ``true``) {` `    `  `                ``// Update all multiples of p` `                ``for` `(``int` `i = p * ``2``; i <= n; i += p)` `                    ``prime[i] = ``false``;` `            ``}` `        ``}` `    ``}` `    `  `    ``// function to print prime triplets` `    ``static` `void` `printPrimeTriplets(``int` `n)` `    ``{` `        ``// Finding all primes from 1 to n` `        ``boolean` `prime[]=``new` `boolean``[n + ``1``];` `        ``Arrays.fill(prime,``true``);` `        ``sieve(n, prime);` `        `  `        ``System.out.println(``"The prime triplets"``+` `                           ``" from 1 to "` `+ n + ``"are :"``);` `        `  `        ``for` `(``int` `i = ``2``; i <= n-``6``; ++i) {` `    `  `            ``// triplets of form (p, p+2, p+6)` `            ``if` `(prime[i] && prime[i + ``2``] && prime[i + ``6``])` `                ``System.out.println( i + ``" "` `+ (i + ``2``) + ` `                                    ``" "` `+ (i + ``6``));` `    `  `            ``// triplets of form (p, p+4, p+6)` `            ``else` `if` `(prime[i] && prime[i + ``4``] && ` `                     ``prime[i + ``6``])` `                `  `                ``System.out.println(i + ``" "` `+ (i + ``4``) +` `                                   ``" "` `+ (i + ``6``));` `        ``}` `    ``}` `    `  `    ``public` `static` `void` `main(String args[])` `    ``{` `        ``int` `n = ``25``;` `        ``printPrimeTriplets(n);` `    ``}` `}`     ` ``/*This code is contributed by Nikita Tiwari.*/`

## Python3

 `# Python 3 program to find ` `# prime triplets smaller` `# than or equal to n.`   `# function to detect prime number` `# using sieve method` `# https://www.geeksforgeeks.org/sieve-of-eratosthenes/` `# to detect prime number` `def` `sieve(n, prime) :` `    `  `    ``p ``=` `2` `    `  `    ``while` `(p ``*` `p <``=` `n ) :` `        `  `        ``# If prime[p] is not changed` `        ``# , then it is a prime` `        ``if` `(prime[p] ``=``=` `True``) :` `            `  `            ``# Update all multiples of p` `            ``i ``=` `p ``*` `2` `        `  `            ``while` `( i <``=` `n ) :` `                ``prime[i] ``=` `False` `                ``i ``=` `i ``+` `p` `        `  `        ``p ``=` `p ``+` `1` `        `    `# function to print ` `# prime triplets` `def` `printPrimeTriplets(n) :`   `    ``# Finding all primes ` `    ``# from 1 to n` `    ``prime ``=` `[``True``] ``*` `(n ``+` `1``)` `    ``sieve(n, prime)` `    `  `    ``print``( ``"The prime triplets from 1 to "``,` `                               ``n , ``"are :"``)` `    `  `    ``for` `i ``in` `range``(``2``, n ``-` `6` `+` `1``) :` `        `  `        ``# triplets of form (p, p+2, p+6)` `        ``if` `(prime[i] ``and` `prime[i ``+` `2``] ``and` `                            ``prime[i ``+` `6``]) :` `            ``print``( i , (i ``+` `2``) , (i ``+` `6``))` `            `  `        ``# triplets of form (p, p+4, p+6)` `        ``elif` `(prime[i] ``and` `prime[i ``+` `4``] ``and` `                            ``prime[i ``+` `6``]) :` `            ``print``(i , (i ``+` `4``) , (i ``+` `6``))` `            `  `# Driver code` `n ``=` `25` `printPrimeTriplets(n)`   `# This code is contributed by Nikita Tiwari.`

## C#

 `// C# program to find prime ` `// triplets smaller than or` `// equal to n.` `using` `System;`   `class` `GFG ` `{` `    `  `// function to detect ` `// prime number` `static` `void` `sieve(``int` `n, ` `                  ``bool``[] prime)` `{` `    ``for` `(``int` `p = 2; ` `             ``p * p <= n; p++) ` `    ``{`   `        ``// If prime[p] is not changed,` `        ``// then it is a prime` `        ``if` `(prime[p] == ``false``) ` `        ``{`   `            ``// Update all multiples of p` `            ``for` `(``int` `i = p * 2; ` `                     ``i <= n; i += p)` `                ``prime[i] = ``true``;` `        ``}` `    ``}` `}`   `// function to print` `// prime triplets` `static` `void` `printPrimeTriplets(``int` `n)` `{` `    ``// Finding all primes` `    ``// from 1 to n` `    ``bool``[] prime = ``new` `bool``[n + 1];` `    ``sieve(n, prime);` `    `  `    ``Console.WriteLine(``"The prime triplets "` `+ ` `                               ``"from 1 to "` `+ ` `                               ``n + ``" are :"``);` `    `  `    ``for` `(``int` `i = 2; i <= n - 6; ++i) ` `    ``{`   `        ``// triplets of form (p, p+2, p+6)` `        ``if` `(!prime[i] && ` `            ``!prime[i + 2] && ` `            ``!prime[i + 6])` `            ``Console.WriteLine(i + ``" "` `+ (i + 2) + ` `                                  ``" "` `+ (i + 6));`   `        ``// triplets of form (p, p+4, p+6)` `        ``else` `if` `(!prime[i] && ` `                 ``!prime[i + 4] && ` `                 ``!prime[i + 6])` `            ``Console.WriteLine(i + ``" "` `+ (i + 4) + ` `                                  ``" "` `+ (i + 6));` `    ``}` `}`   `// Driver Code` `public` `static` `void` `Main()` `{` `    ``int` `n = 25;` `    ``printPrimeTriplets(n);` `}` `}`   `// This code is contributed by mits`

## PHP

 ``

## Javascript

 ``

Output :

```The prime triplets from 1 to 25 are :
5 7 11
7 11 13
11 13 17
13 17 19
17 19 23```

Time Complexity: O(n*log(log(n)))

Auxiliary Space: O(n)

My Personal Notes arrow_drop_up
Related Articles