Twin Prime Numbers between 1 and n
Last Updated :
04 Nov, 2022
Given an integer n. we need to print all twin prime number pairs between 1 to n. A Twin prime are those numbers which are prime and having a difference of two ( 2 ) between the two prime numbers. In other words, a twin prime is a prime that has a prime gap of two.
Sometimes the term twin prime is used for a pair of twin primes; an alternative name for this is prime twin or prime pair. Usually, the pair (2, 3) is not considered to be a pair of twin primes. Since 2 is the only even prime, this pair is the only pair of prime numbers that differ by one; thus twin primes are as closely spaced as possible for any other two primes.
The first few twin prime pairs are :
(3, 5), (5, 7), (11, 13), (17, 19), (29, 31),
(41, 43), (59, 61), (71, 73), (101, 103),
(107, 109), (137, 139), …etc.
FACT: There are 409 Twin primes below 10, 000.
Examples:
Input : n = 15
Output : (3, 5), (5, 7), (11, 13)
Input : 25
Output : (3, 5), (5, 7), (11, 13), (17, 19)
Approach:
Using Sieve of Eratosthenes find the list of all primes smaller than or equal to n and then iterate list again till n and just checks the ith number and check its (i+2)th number if both are prime then print both the numbers else proceed to next number to find Twin prime.
C++
#include <bits/stdc++.h>
using namespace std;
void printTwinPrime( int n)
{
bool prime[n + 1];
memset (prime, true , sizeof (prime));
for ( int p = 2; p * p <= n; p++) {
if (prime[p] == true ) {
for ( int i = p * 2; i <= n; i += p)
prime[i] = false ;
}
}
for ( int p = 2; p <= n - 2; p++)
if (prime[p] && prime[p + 2])
cout << "(" << p << ", " << p + 2 << ")" ;
}
int main()
{
int n = 25;
printTwinPrime(n);
return 0;
}
|
Java
import java.io.*;
class GFG {
static void printTwinPrime( int n)
{
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] == true ) {
for ( int i = p * 2 ; i <= n; i += p)
prime[i] = false ;
}
}
for ( int i = 2 ; i <= n - 2 ; i++) {
if (prime[i] == true &&
prime[i + 2 ] == true )
System.out.print( " (" + i + ", " +
(i + 2 ) + ")" );
}
}
public static void main(String args[])
{
int n = 25 ;
printTwinPrime(n);
}
}
|
Python
def printTwinPrime(n):
prime = [ True for i in range (n + 2 )]
p = 2
while (p * p < = n + 1 ):
if (prime[p] = = True ):
for i in range (p * 2 , n + 2 , p):
prime[i] = False
p + = 1
for p in range ( 2 , n - 1 ):
if prime[p] and prime[p + 2 ]:
print ( "(" ,p, "," , (p + 2 ), ")" ,end = '')
if __name__ = = '__main__' :
n = 25
printTwinPrime(n)
|
C#
using System;
public class GFG {
public static void printtwinprime( int n)
{
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] == true ) {
for ( int i = p * 2; i <= n; i += p)
prime[i] = false ;
}
}
for ( int i = 2; i <= n - 2; i++) {
if (prime[i] == true && prime[i + 2] == true )
Console.Write( " (" + i + ", " + (i + 2) + ")" );
}
}
public static void Main()
{
int n = 25;
printtwinprime(n);
}
}
|
PHP
<?php
function printTwinPrime( $n )
{
$prime = array_fill (0, $n + 1, true);
for ( $p = 2; $p * $p <= $n ; $p ++)
{
if ( $prime [ $p ] == true)
{
for ( $i = $p * 2;
$i <= $n ; $i += $p )
$prime [ $i ] = false;
}
}
for ( $p = 2; $p <= $n - 2; $p ++)
if ( $prime [ $p ] &&
$prime [ $p + 2])
echo "(" . $p . ", " .
( $p + 2). ")" ;
}
$n = 25;
printTwinPrime( $n );
?>
|
Javascript
<script>
function printTwinPrime(n)
{
let prime = [];
for (let i = 0; i <= n; i++)
prime[i] = true ;
for (let p = 2; p * p <= n; p++) {
if (prime[p] == true ) {
for (let i = p * 2; i <= n; i += p)
prime[i] = false ;
}
}
for (let i = 2; i <= n - 2; i++) {
if (prime[i] == true &&
prime[i + 2] == true )
document.write( " (" + i + ", " +
(i + 2) + ")" );
}
}
let n = 25;
printTwinPrime(n);
</script>
|
Output:
(3, 5)(5, 7)(11, 13)(17, 19)
Time Complexity: O(n*log(log(n)))
Auxiliary Space: O(n)
Share your thoughts in the comments
Please Login to comment...