primer triplete

Prime Triplet es un conjunto de tres números primos de la forma ( p, p+2, p+6 ) o ( p, p+4, p+6 ). Esta es la agrupación más cercana posible de tres números primos, ya que uno de cada tres números impares secuenciales es un múltiplo de tres y, por lo tanto, no es primo (excepto el propio 3) excepto (2, 3, 5) y (3, 5, 7 ).

Ejemplos:  

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

Una solución simple es recorrer todos los números del 1 al n-6. Para cada número, compruebo si i, i+2, i+6 o i, i+4, i+6 son primos. En caso afirmativo, imprima trillizos.

Una solución eficiente es Tamiz de Eratóstenes para encontrar primero todos los números primos para que podamos verificar rápidamente si un número es primo o no.
A continuación se muestra la implementación del enfoque.  

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

<?php
// PHP program to find prime
// triplets smaller than or
// equal to n.
 
// function to print
// prime triplets
function 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 triplets
function 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 Code
let n = 25;
printPrimeTriplets(n);
 
// This code is contributed by gfgking
</script>

Producción :  

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

Publicación traducida automáticamente

Artículo escrito por Surya Priy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *