A Cunningham chain is a sequence of prime numbers. It is of 2 types:
- Cunningham chain of the first kind: It is a sequence of prime numbers of length n described as below :
Let p1, p2, p3, …., pn be a cunningham chain of length n than
p2 = 2*p1 + 1
p3 = 4*p1 + 3
p4 = 8*p1 + 7
. . .
. . .
pn = 2n-1*p1 + (2n-1 – 1)
- Here p1, p2, p3, …., pn are all prime numbers. If any value of p comes out to be non-prime then chain ends at the number which came before it.
for p0 = 2, the sequence will be 2 5 11 23 47
Below is the implementation of the above:
C++
#include <bits/stdc++.h>
using namespace std;
void print( int p0)
{
int p1, i = 0, x, flag, k;
while (1) {
flag = 1;
x = ( int )( pow (2, i));
p1 = x * p0 + (x - 1);
for (k = 2; k < p1; k++) {
if (p1 % k == 0) {
flag = 0;
break ;
}
}
if (flag == 0)
break ;
printf ( "%d " , p1);
i++;
}
}
int main()
{
int p0 = 2;
print(p0);
return 0;
}
|
Java
class GFG
{
static void print( int p0)
{
int p1, i = 0 , x, flag, k;
while ( true )
{
flag = 1 ;
x = ( int )(Math.pow( 2 , i));
p1 = x * p0 + (x - 1 );
for (k = 2 ; k < p1; k++)
{
if (p1 % k == 0 )
{
flag = 0 ;
break ;
}
}
if (flag == 0 )
break ;
System.out.print( " " + p1);
i++;
}
}
public static void main(String args[])
{
int p0 = 2 ;
print(p0);
}
}
|
Python3
def print_C(p0):
i = 0 ;
while ( True ):
flag = 1 ;
x = pow ( 2 , i);
p1 = x * p0 + (x - 1 );
for k in range ( 2 , p1):
if (p1 % k = = 0 ):
flag = 0 ;
break ;
if (flag = = 0 ):
break ;
print (p1, end = " " );
i + = 1 ;
p0 = 2 ;
print_C(p0);
|
C#
using System;
class GFG
{
static void print( int p0)
{
int p1, i = 0, x, flag, k;
while ( true )
{
flag = 1;
x = ( int )(Math.Pow(2, i));
p1 = x * p0 + (x - 1);
for (k = 2; k < p1; k++)
{
if (p1 % k == 0)
{
flag = 0;
break ;
}
}
if (flag == 0)
break ;
Console.Write( " " + p1);
i++;
}
}
public static void Main()
{
int p0 = 2;
print(p0);
}
}
|
PHP
<?php
function print_C( $p0 )
{
$p1 = 0; $i = 0; $x ; $flag ; $k ;
while (1)
{
$flag = 1;
$x = pow(2, $i );
$p1 = $x * $p0 + ( $x - 1);
for ( $k = 2; $k < $p1 ; $k ++)
{
if ( $p1 % $k == 0) {
$flag = 0;
break ;
}
}
if ( $flag == 0)
break ;
echo $p1 . " " ;
$i ++;
}
}
$p0 = 2;
print_C( $p0 );
|
Javascript
<script>
function print_C(p0)
{
let p1 = 0;
let i = 0;
let x;
let flag;
let k;
while (1)
{
flag = 1;
x = Math.pow(2, i);
p1 = x * p0 + (x - 1);
for (let k = 2; k < p1; k++)
{
if (p1 % k == 0) {
flag = 0;
break ;
}
}
if (flag == 0)
break ;
document.write(p1 + " " );
i++;
}
}
let p0 = 2;
print_C(p0);
</script>
|
- Cunningham chain of the second kind: It is a sequence of prime numbers of length n described as below:
Let p1, p2, p3, …., pn be a cunningham chain of length n than
p2 = 2*p1 – 1
p3 = 4*p1 – 3
p4 = 8*p1 – 7
. . .
. . .
pn = 2n-1*p1 – (2n-1 – 1)
- for p0 = 19, the sequence will be 19, 37, 73.
Below is the implementation of the above:
C++
#include <bits/stdc++.h>
using namespace std;
void print( int p0)
{
int p1, i = 0, x, flag, k;
while (1) {
flag = 1;
x = ( int )( pow (2, i));
p1 = x * p0 - (x - 1);
for (k = 2; k < p1; k++) {
if (p1 % k == 0) {
flag = 0;
break ;
}
}
if (flag == 0)
break ;
printf ( "%d " , p1);
i++;
}
}
int main()
{
int p0 = 19;
print(p0);
return 0;
}
|
Java
class GFG{
static void print( int p0)
{
int p1, i = 0 , x, flag, k;
while ( true )
{
flag = 1 ;
x = ( int )(Math.pow( 2 , i));
p1 = x * p0 - (x - 1 );
for (k = 2 ; k < p1; k++)
{
if (p1 % k == 0 )
{
flag = 0 ;
break ;
}
}
if (flag == 0 )
break ;
System.out.print(p1+ " " );
i++;
}
}
public static void main(String[] args)
{
int p0 = 19 ;
print(p0);
}
}
|
Python3
def print_t(p0):
i = 0 ;
while ( True ):
flag = 1 ;
x = pow ( 2 , i);
p1 = x * p0 - (x - 1 );
for k in range ( 2 , p1):
if (p1 % k = = 0 ):
flag = 0 ;
break ;
if (flag = = 0 ):
break ;
print (p1,end = " " );
i + = 1 ;
p0 = 19 ;
print_t(p0);
|
C#
using System;
class GFG
{
static void print( int p0)
{
int p1, i = 0, x, flag, k;
while ( true )
{
flag = 1;
x = ( int )(Math.Pow(2, i));
p1 = x * p0 - (x - 1);
for (k = 2; k < p1; k++)
{
if (p1 % k == 0)
{
flag = 0;
break ;
}
}
if (flag == 0)
break ;
Console.Write(p1 + " " );
i++;
}
}
static void Main()
{
int p0 = 19;
print(p0);
}
}
|
PHP
<?php
function print_t( $p0 )
{
$p1 ; $i = 0; $x ; $flag ; $k ;
while (1)
{
$flag = 1;
$x = pow(2, $i );
$p1 = $x * $p0 - ( $x - 1);
for ( $k = 2; $k < $p1 ; $k ++) {
if ( $p1 % $k == 0) {
$flag = 0;
break ;
}
}
if ( $flag == 0)
break ;
echo $p1 . " " ;
$i ++;
}
}
$p0 = 19;
print_t( $p0 );
|
Javascript
<script>
function print(p0)
{
var p1, i = 0, x, flag = 1, k, m = 4;
while (flag) {
flag = 1;
x = Math.pow(2, i);
p1 = x * p0 - (x - 1);
for (k = 2; k < p1; k++) {
if (p1 % k == 0) {
flag = 0;
break ;
}
}
if (flag == 0)
break ;
document.write(p1 + " " );
i++;
}
}
var p0 = 19;
print(p0);
</script>
|
Time complexity : O(n^2), where n is the number of elements in the Cunningham chain of the first kind.
Space complexity: O(1), as it only uses a few variables and doesn’t increase with the size of the input.
Last Updated :
14 Feb, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...