Números primos gemelos entre 1 y n

Dado un entero n. necesitamos imprimir todos los pares de números primos gemelos entre 1 y n. Un primo gemelo son aquellos números que son primos y tienen una diferencia de dos (2) entre los dos números primos. En otras palabras, un primo gemelo es un primo que tiene un espacio primo de dos. 
A veces, el término primo gemelo se usa para un par de primos gemelos; un nombre alternativo para esto es gemelo primo o par primo. Por lo general, el par (2, 3) no se considera un par de primos gemelos. Dado que 2 es el único primo par, este par es el único par de números primos que difieren en uno; por lo tanto, los primos gemelos están lo más juntos posible para cualquier otro par de primos.
Los primeros pares primos gemelos son: 
 

(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), 
(41, 43), (59, 61), (71, 73), (101, 103), 
(107, 109), (137, 139), …etc.

HECHO : Hay 409 números primos gemelos por debajo de 10 000.
Ejemplos: 
 

Input : n = 15
Output : (3, 5), (5, 7), (11, 13)

Input : 25
Output :(3, 5), (5, 7), (11, 13), (17, 19)

Enfoque: 
usando la criba de Eratóstenes , busque la lista de todos los primos menores o iguales que n y luego itere la lista nuevamente hasta n y simplemente verifique el i -ésimo número y compruebe su (i+2) -ésimo número si ambos son primos, luego imprima ambos los números de lo contrario proceden al siguiente número para encontrar gemelos primos. 
 

C++

// C++ program print all twin primes
// using Sieve of Eratosthenes.
#include <bits/stdc++.h>
using namespace std;
 
void printTwinPrime(int n)
{
    // Create a boolean array "prime[0..n]"
    // and initialize all entries it as true.
    // A value in prime[i] will finally be false
    // if i is Not a prime, else true.
    bool prime[n + 1];
    memset(prime, true, sizeof(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;
        }
    }
 
    // to check for twin prime numbers
    // display the twin primes
    for (int p = 2; p <= n - 2; p++)
        if (prime[p] && prime[p + 2])
            cout << "(" << p << ", " << p + 2 << ")" ;
}
 
// Driver Program to test above function
int main()
{
    int n = 25;
     
    // Calling the function
    printTwinPrime(n);
 
    return 0;
}

Java

// Java program to print all Twin Prime
// Numbers using Sieve of Eratosthenes
import java.io.*;
 
class GFG {
 
    static void printTwinPrime(int n)
    {
        // Create a boolean array "prime[0..n]"
        // and initialize all entries it as
        // true. A value in prime[i] will
        // finally be false if i is Not a
        // prime, else true.
        boolean prime[] = new boolean[n + 1];
         
        for (int i = 0; i <= n; i++)
            prime[i] = true;
 
        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;
            }
        }
 
        // to check for twin prime numbers
        // display th twin prime
        for (int i = 2; i <= n - 2; i++) {
 
            if (prime[i] == true &&
                prime[i + 2] == true)
             
                // Display the result
                System.out.print(" (" + i + ", " +
                                   (i + 2) + ")");
        }
    }
 
    // Driver Program to test above function
    public static void main(String args[])
    {
        int n = 25;
        printTwinPrime(n);
    }
}

Python

# Python program to illustrate...
# To print total number of twin prime
# using Sieve of Eratosthenes
 
def printTwinPrime(n):
     
    # Create a boolean array "prime[0..n]"
    # and initialize all entries it as
    # true. A value in prime[i] will
    # finally be false if i is Not a prime,
    # else true.
    prime = [True for i in range(n + 2)]
    p = 2
     
    while (p * p <= n + 1):
         
        # If prime[p] is not changed,
        # then it is a prime
        if (prime[p] == True):
             
            # Update all multiples of p
            for i in range(p * 2, n + 2, p):
                prime[i] = False
        p += 1
     
    # check twin prime numbers
    # display the twin prime numbers
    for p in range(2, n-1):
        if prime[p] and prime[p + 2]:
            print("(",p,",", (p + 2), ")" ,end='')
 
 
# driver program
if __name__=='__main__':
     
    # static input
    n = 25
     
    # Calling the function
    printTwinPrime(n)

C#

// C# program to illustrate..
// print all twin primes
// Using Sieve of Eratosthenes
using System;
 
public class GFG {
 
    public static void printtwinprime(int n)
    {
 
        // Create a boolean array "prime[0..n]"
        // and initialize all entries it as
        // true. A value in prime[i] will
        // finally be false if i is Not a
        // prime, else true.
        bool[] prime = new bool[n + 1];
 
        for (int i = 0; i < n + 1; i++)
            prime[i] = true;
 
        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;
            }
        }
 
        // check for twin prime numbers
        // To display th result
        for (int i = 2; i <= n - 2; i++) {
            if (prime[i] == true && prime[i + 2] == true)
                Console.Write(" (" + i + ", " + (i + 2) + ")");
        }
    }
 
    // Driver Code
    public static void Main()
    {
        // static input
        int n = 25;
         
 
        // calling the function
        printtwinprime(n);
    }  
}

PHP

<?php
// PHP program to print
// all twin primes using
// Sieve of Eratosthenes.
function printTwinPrime($n)
{
    // Create a boolean array
    // "prime[0..n]"  and
    // initialize all entries
    // it as true. A value in
    // prime[i] will finally be 
    // false if i is Not a prime,
    // else true.
    $prime = array_fill(0, $n + 1, true);
 
    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;
        }
    }
 
    // to check for twin
    // prime numbers display
    // the twin primes
    for ($p = 2; $p <= $n - 2; $p++)
        if ($prime[$p] &&
            $prime[$p + 2])
            echo "(". $p . ", " .
                  ($p + 2). ")" ;
}
 
// Driver Code
$n = 25;
 
// Calling the function
printTwinPrime($n);
 
// This code is contributed by mits.
?>

Javascript

<script>
 
// JavaScript program to print all Twin Prime
// Numbers using Sieve of Eratosthenes
 
    function printTwinPrime(n)
    {
        // Create a boolean array "prime[0..n]"
        // and initialize all entries it as
        // true. A value in prime[i] will
        // finally be false if i is Not a
        // prime, else true.
        let prime = [];
           
        for (let i = 0; i <= n; i++)
            prime[i] = true;
   
        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;
            }
        }
   
        // to check for twin prime numbers
        // display th twin prime
        for (let i = 2; i <= n - 2; i++) {
   
            if (prime[i] == true &&
                prime[i + 2] == true)
               
                // Display the result
                document.write(" (" + i + ", " +
                                   (i + 2) + ")");
        }
    }
// Driver program
 
        let n = 25;
        printTwinPrime(n);
         
        // This code is contributed by susmitakundugoaldanga.
</script>
Producción: 

(3, 5)(5, 7)(11, 13)(17, 19)

 

Publicación traducida automáticamente

Artículo escrito por Manish_100 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 *