Given a positive number n, the task is to check whether the given number is Interprime or not. If the given number is Interprime print ‘YES’ Otherwise Print ‘NO’.
Interprime : In Mathematics, An interprime is a positive integer representing average of two consecutive odd prime numbers.
The first few Interprimes are –
4, 6, 9, 12, 15, 18, 21, 26, 30, 34, 39, 42, 45, 50, 56, 60, 64, 69, 72, 76, 81, 86, 93, 99
Examples:
Input : 12
Output : YES
Explanation: 12 is average of consecutive prime number 11 and 13.
Input : 20
Output : NO
A Simple solution of this problem is to generate prime numbers and check if we can get the given average from consecutive odd prime number or not.
Approach :
- Start generating prime number ‘p’ form i=3 to the prime number p > n
- if we find average of p and p+1 as the given number n, then stop and Print ‘YES’
- If we don not find such p and p+1 with the given average print ‘NO’.
An Efficient solution is to check average of prime number p1 and p2 only, such that p1 and p2 are consecutive and p1 < n < p2.
Approach :
- calculate consecutive prime number p1 and p2. such that p1 < n < p2.
- calculate average of p1 and p2.
- Print ‘YES’ if we get the given average Otherwise print ‘NO’.
C++
#include <bits/stdc++.h>
using namespace std;
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 isInterprime( int n)
{
if (n < 4)
return false ;
int prev_prime = n;
int next_prime = n;
while (!isPrime(prev_prime)) {
prev_prime--;
}
while (!isPrime(next_prime)) {
next_prime++;
}
if ((prev_prime + next_prime) == 2 * n)
return true ;
else
return false ;
}
int main()
{
int n = 9;
if (isInterprime(n))
cout << "YES" ;
else
cout << "NO" ;
return 0;
}
|
Java
class GFG {
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 isInterprime( int n)
{
if (n < 4 )
return false ;
int prev_prime = n;
int next_prime = n;
while (!isPrime(prev_prime)) {
prev_prime--;
}
while (!isPrime(next_prime)) {
next_prime++;
}
if ((prev_prime + next_prime) == 2 * n)
return true ;
else
return false ;
}
public static void main(String[] args)
{
int n = 9 ;
if (isInterprime(n))
System.out.println( "YES" );
else
System.out.println( "NO" );
}
}
|
Python3
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 isInterprime( n):
if (n < 4 ):
return False
prev_prime = n
next_prime = n
while (isPrime(prev_prime) = = 0 ):
prev_prime = prev_prime - 1
while (isPrime(next_prime) = = 0 ):
next_prime = next_prime + 1
if ((prev_prime + next_prime) = = 2 * n):
return True
else :
return False
n = 9
if (isInterprime(n)):
print ( "YES" )
else :
print ( "NO" )
|
C#
using System;
class GFG {
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 isInterprime( int n)
{
if (n < 4)
return false ;
int prev_prime = n;
int next_prime = n;
while (!isPrime(prev_prime)) {
prev_prime--;
}
while (!isPrime(next_prime)) {
next_prime++;
}
if ((prev_prime + next_prime) == 2 * n)
return true ;
else
return false ;
}
public static void Main()
{
int n = 9;
if (isInterprime(n))
Console.WriteLine( "YES" );
else
Console.WriteLine( "NO" );
}
}
|
PHP
<?php
function isPrime( $n )
{
if ( $n <= 1)
return false;
if ( $n <= 3)
return true;
if ( $n % 2 == 0 or $n % 3 == 0)
return false;
for ( $i = 5;
$i * $i <= $n ; $i = $i + 6)
{
if ( $n % $i == 0 or
$n % ( $i + 2) == 0)
{
return false;
}
}
return true;
}
function isInterprime( $n )
{
if ( $n < 4)
return false;
$prev_prime = $n ;
$next_prime = $n ;
while (!isPrime( $prev_prime ))
{
$prev_prime --;
}
while (!isPrime( $next_prime ))
{
$next_prime ++;
}
if (( $prev_prime +
$next_prime ) == 2 * $n )
return true;
else
return false;
}
$n = 9;
if (isInterprime( $n ))
echo "YES" ;
else
echo "NO" ;
?>
|
Javascript
<script>
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 isInterprime(n)
{
if (n < 4)
return false ;
var prev_prime = n;
var next_prime = n;
while (!isPrime(prev_prime)) {
prev_prime--;
}
while (!isPrime(next_prime)) {
next_prime++;
}
if ((prev_prime + next_prime) == 2 * n)
return true ;
else
return false ;
}
var n = 9;
if (isInterprime(n))
document.write( "YES" );
else
document.write( "NO" );
</script>
|
Output:
YES
Last Updated :
21 Jun, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...