Check if a number is sandwiched between primes
A number is said to be sandwiched between primes if the number just after it and the number just before are Prime numbers. So, a sandwiched number is between two prime numbers.
Given a number n, we need to check whether this number is sandwiched between primes or not.
Examples:
Input : 642 Output : Yes Explanation : 641 and 643 are both prime numbers Input : 6 Output : Yes Explanation : 5 and 7 both are prime numbers Input : 9 Output : No Explanation : 8 and 10 both are non-prime numbers
The idea is simple, we check if n-1 and n-2 are prime numbers.
C++
// CPP Program to check whether a number is // sandwiched between two primes or not #include<iostream> #include <cmath> using namespace std; // returns true if number n is prime bool isPrime( int n) { // 0 and 1 both are non-primes if (n == 0 || n == 1) return false ; // finding square root of n int root = sqrt (n); // checking if n has any // factor upto square root of n // if yes its not prime for ( int i=2;i<=root;i++) if (n%i == 0) return false ; return true ; } bool isSandwitched( int n) { return (isPrime(n-1) && isPrime(n+1)); } // Driver's Code int main() { int n = 642; cout << n << " : " ; if (isSandwitched(n)) cout<< "Yes\n" ; else cout<< "No\n" ; n = 9; cout<< n << " : " ; if (isSandwitched(n)) cout << "Yes\n" ; else cout << "No\n" ; return 0; } |
Java
// java Program to check whether // a number is sandwiched between // two primes or not import java.io.*; class GFG { // returns true if number n is prime static boolean isPrime( int n) { // 0 and 1 both are non-primes if (n == 0 || n == 1 ) return false ; // finding square root of n int root = ( int )Math.sqrt(n); // checking if n has any // factor upto square root of n // if yes its not prime for ( int i = 2 ; i <= root; i++) if (n % i == 0 ) return false ; return true ; } static boolean isSandwitched( int n) { return (isPrime(n - 1 ) && isPrime(n + 1 )); } // Driver's Code public static void main (String[] args) { int n = 642 ; System.out.print ( n + " : " ); if (isSandwitched(n)) System.out.println( "Yes" ); else System.out.println( "No" ); n = 9 ; System.out.print(n + " : " ); if (isSandwitched(n)) System.out.println( "Yes" ); else System.out.println ( "No" ); } } // This article is contributed by vt_m. |
Python3
# Python Program to check # whether a number is # sandwiched between # two primes or not import math # returns true if number n is prime def isPrime(n): # 0 and 1 both are non-primes if (n = = 0 or n = = 1 ): return False # finding square root of n root = int (math.sqrt(n)) # checking if n has any # factor upto square root of n # if yes its not prime for i in range ( 2 ,root + 1 ): if (n % i = = 0 ): return False return True def isSandwitched(n): return (isPrime(n - 1 ) and isPrime(n + 1 )) # driver Function n = 642 print (n , end = " : " ) if (isSandwitched(n)): print ( "Yes" ) else : print ( "No" ) n = 9 print (n , end = " : " ) if (isSandwitched(n)): print ( "Yes" ) else : print ( "No" ) # This code is contributed by Gitanjali. |
C#
// C# Program to check whether // a number is sandwiched between // two primes or not using System; class GFG { // returns true if number n is prime static bool isPrime( int n) { // 0 and 1 both are non-primes if (n == 0 || n == 1) return false ; // finding square root of n int root = ( int )Math.Sqrt(n); // checking if n has any factor // upto square root of n if yes // its not prime for ( int i = 2; i <= root; i++) if (n % i == 0) return false ; return true ; } static bool isSandwitched( int n) { return (isPrime(n - 1) && isPrime(n + 1)); } // Driver Code public static void Main () { int n = 642; Console.Write( n + " : " ); if (isSandwitched(n)) Console.WriteLine( "Yes" ); else Console.Write( "No" ); n = 9; Console.Write(n + " : " ); if (isSandwitched(n)) Console.Write( "Yes" ); else Console.Write ( "No" ); } } // This code is contributed by Nitin Mittal. |
PHP
<?php // PHP Program to check whether a number is // sandwiched between two primes or not // returns true if number n is prime function isPrime( $n ) { // 0 and 1 both are non-primes if ( $n == 0 || $n == 1) return false; // finding square root of n $root = sqrt( $n ); // checking if n has any // factor upto square root of n // if yes its not prime for ( $i = 2; $i <= $root ; $i ++) if ( $n % $i == 0) return false; return true; } function isSandwitched( $n ) { return (isPrime( $n - 1) && isPrime( $n + 1)); } // Driver Code $n = 642; echo $n , " : " ; if (isSandwitched( $n )) echo "Yes\n" ; else echo "No\n" ; $n = 9; echo $n , " : " ; if (isSandwitched( $n )) echo "Yes\n" ; else echo "No\n" ; // This code is contributed by ajit. ?> |
Javascript
<script> // JavaScript Program to check whether // a number is sandwiched between // two primes or not // returns true if number n is prime function isPrime(n) { // 0 and 1 both are non-primes if (n == 0 || n == 1) return false ; // finding square root of n let root = Math.sqrt(n); // checking if n has any // factor upto square root of n // if yes its not prime for (let i = 2; i <= root; i++) if (n % i == 0) return false ; return true ; } function isSandwitched(n) { return (isPrime(n - 1) && isPrime(n + 1)); } // Driver code let n = 642; document.write ( n + " : " ); if (isSandwitched(n)) document.write( "Yes" + "<br/>" ); else document.write( "No" + "<br/>" ); n = 9; document.write(n + " : " ); if (isSandwitched(n)) document.write( "Yes" + "<br/>" ); else document.write ( "No" + "<br/>" ); </script> |
Output:
642 : Yes 9 : No
Time complexity: O(sqrt(n))
Auxiliary space: O(1)
Using lambda function:
Approach:
- Define an anonymous function is_prime that takes a number and returns True if it is prime and False otherwise.
- Get the input number n.
- Check if n-1 and n+1 are prime by calling the is_prime function.
- If both n-1 and n+1 are prime, print “Yes”. Otherwise, print “No”.
Python3
# Python code to check if a number is sandwiched between primes using anonymous function is_prime = lambda num : all (num % i ! = 0 for i in range ( 2 , int (num * * 0.5 ) + 1 )) n = 9 if is_prime(n - 1 ) and is_prime(n + 1 ): print ( "Yes" ) else : print ( "No" ) |
Output
No
Time complexity: O(sqrt(n))
Auxiliary Space: O(1)
Please Login to comment...