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 <bits/stdc++.h>using namespace std;Â
// function to detect prime number// here we have used sieve method// to detect prime numbervoid 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 tripletsvoid 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// 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# to detect prime numberdef 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 tripletsdef 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 coden = 25printPrimeTriplets(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 numberstatic 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 tripletsstatic 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 Codepublic static void Main(){Â Â Â Â int n = 25;Â Â Â Â printPrimeTriplets(n);}}Â
// This code is contributed by mits |
PHP
<?php// PHP program to find prime // triplets smaller than or// equal to n.Â
// function to print // prime tripletsfunction printPrimeTriplets($n){    // Finding all primes    // from 1 to n    $prime = array_fill(0, $n + 1, true);         // to detect prime number    for ($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 ($i = $p * 2; $i <= $n; $i += $p)                $prime[$i] = false;        }    }         echo "The prime triplets from 1 to " .                           $n . " are :\n";    for ($i = 2; $i <= $n-6; ++$i)     {Â
        // triplets of form (p, p+2, p+6)        if ($prime[$i] && $prime[$i + 2] &&                           $prime[$i + 6])            echo $i. " " . ($i + 2) .                      " " . ($i + 6) . "\n";Â
        // triplets of form (p, p+4, p+6)        else if ($prime[$i] && $prime[$i + 4] &&                                $prime[$i + 6])            echo $i. " " . ($i + 4) .                      " " . ($i + 6) . "\n";    } }Â
// Driver Code$n = 25;printPrimeTriplets($n);Â
// This code is contributed by mits.?> |
Javascript
<script>// Javascript program to find prime// triplets smaller than or// equal to n.Â
// function to print// prime tripletsfunction printPrimeTriplets(n){    // Finding all primes    // from 1 to n    let prime = new Array(n + 1).fill(true);         // to detect prime number    for (let 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 (let i = p * 2; i <= n; i += p)                prime[i] = false;        }    }         document.write("The prime triplets from 1 to " + n + " are :<br>");    for (let i = 2; i <= n-6; ++i)    {Â
        // triplets of form (p, p+2, p+6)        if (prime[i] && prime[i + 2] &&                        prime[i + 6])            document.write(i + " " + (i + 2) +                    " " + (i + 6) + "<br>");Â
        // triplets of form (p, p+4, p+6)        else if (prime[i] && prime[i + 4] &&                            prime[i + 6])            document.write(i + " " + (i + 4) +                    " " + (i + 6) + "<br>");    }}Â
// Driver Codelet n = 25;printPrimeTriplets(n);Â
// This code is contributed by gfgking</script> |
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)
Â
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
