Chen Prime Number
Last Updated :
21 Sep, 2022
Given a positive integer n, the task is to check if it is a Chen prime number. If the given number is a Chen Prime number then print ‘YES’ otherwise print ‘NO’.
Chen prime Number: In mathematics, a Prime number ‘p’ is called as chen prime number , if either ‘p+2’ is a prime number or a semi prime number.
A semi-prime number is product of two prime numbers.
The first few Chen prime numbers are:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 47, 53, 59, 67, 71, 83, 89, 101
Examples:
Input : 11
Output: YES
Explanation:
11 is prime number and 11+2
(i.e 13 is also prime number)
Input : 7
Output: YES
Explanation:
7 is prime number and 7+2
( i.e 9 ) is a semi prime number
Prerequisite:
Approach:
- Check if the given number – ‘n’ is a prime or not.
- If n is a prime number:
- Check if n+2 is either prime or semi-prime
- Print ‘YES’ if n+2 is either prime number or a semi-prime number
- Otherwise print ‘NO’
- If n is not a prime number, print ‘NO’.
Below is the implementation of the above idea
CPP
#include <bits/stdc++.h>
using namespace std;
int isSemiprime( int num)
{
int cnt = 0;
for ( int i = 2; cnt < 2 && i * i <= num; ++i)
while (num % i == 0)
num /= i, ++cnt;
if (num > 1)
++cnt;
return cnt == 2;
}
bool isPrime( int n)
{
if (n <= 1)
return false ;
if (n <= 3)
return true ;
if (n % 2 == 0 || n % 3 == 0)
return false ;
for ( int i = 5; i * i <= n; i = i + 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false ;
}
}
return true ;
}
bool isChenPrime( int n)
{
if (isPrime(n) && (isSemiprime(n + 2) || isPrime(n + 2)))
return true ;
else
return false ;
}
int main()
{
int n = 7;
if (isChenPrime(n))
cout << "YES" ;
else
cout << "NO" ;
return 0;
}
|
Java
class GFG {
static boolean isSemiPrime( int num)
{
int cnt = 0 ;
for ( int i = 2 ; cnt < 2 && i * i <= num; ++i)
while (num % i == 0 ) {
num /= i;
++cnt;
}
if (num > 1 )
++cnt;
return cnt == 2 ? true : false ;
}
static boolean isPrime( int n)
{
if (n <= 1 )
return false ;
if (n <= 3 )
return true ;
if (n % 2 == 0 || n % 3 == 0 )
return false ;
for ( int i = 5 ; i * i <= n; i = i + 6 ) {
if (n % i == 0 || n % (i + 2 ) == 0 ) {
return false ;
}
}
return true ;
}
static boolean isChenPrime( int n)
{
if (isPrime(n) && (isSemiPrime(n + 2 ) || isPrime(n + 2 )))
return true ;
else
return false ;
}
public static void main(String[] args)
{
int n = 7 ;
if (isChenPrime(n))
System.out.println( "YES" );
else
System.out.println( "NO" );
}
}
|
C#
using System;
class GFG {
static bool isSemiPrime( int num)
{
int cnt = 0;
for ( int i = 2; cnt < 2 && i * i <= num; ++i)
while (num % i == 0) {
num /= i;
++cnt;
}
if (num > 1)
++cnt;
return cnt == 2 ? true : false ;
}
static bool isPrime( int n)
{
if (n <= 1)
return false ;
if (n <= 3)
return true ;
if (n % 2 == 0 || n % 3 == 0)
return false ;
for ( int i = 5; i * i <= n; i = i + 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false ;
}
}
return true ;
}
static bool isChenPrime( int n)
{
if (isPrime(n) && (isSemiPrime(n + 2) || isPrime(n + 2)))
return true ;
else
return false ;
}
public static void Main()
{
int n = 7;
if (isChenPrime(n))
Console.WriteLine( "YES" );
else
Console.WriteLine( "NO" );
}
}
|
Python3
import math
def isSemiPrime(num):
cnt = 0
for i in range ( 2 , int (math.sqrt(num)) + 1 ):
while num % i = = 0 :
num / = i
cnt + = 1
if cnt > = 2 :
break
if (num > 1 ):
cnt + = 1
return cnt = = 2
def isPrime(n) :
if (n < = 1 ) :
return False
if (n < = 3 ) :
return True
if (n % 2 = = 0 or n % 3 = = 0 ) :
return False
i = 5
while (i * i < = n) :
if (n % i = = 0 or n % (i + 2 ) = = 0 ) :
return False
i = i + 6
return True
def isChenPrime( n):
if (isPrime(n) and (isSemiPrime(n + 2 ) or isPrime(n + 2 ))):
return True
else :
return False
n = 7
if (isChenPrime(n)):
print ( "YES" );
else :
print ( "NO" );
|
Javascript
<script>
function isSemiprime(num)
{
var cnt = 0;
for ( var i = 2; cnt < 2 && i * i <= num; ++i)
while (num % i == 0)
num /= i, ++cnt;
if (num > 1)
++cnt;
return cnt == 2;
}
function isPrime(n)
{
if (n <= 1)
return false ;
if (n <= 3)
return true ;
if (n % 2 == 0 || n % 3 == 0)
return false ;
for ( var i = 5; i * i <= n; i = i + 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false ;
}
}
return true ;
}
function isChenPrime(n)
{
if (isPrime(n) && (isSemiprime(n + 2) || isPrime(n + 2)))
return true ;
else
return false ;
}
var n = 7;
if (isChenPrime(n))
document.write( "YES" );
else
document.write( "NO" );
</script>
|
Time Complexity: O(?n)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...