Open In App

Check if a number is sandwiched between primes

Improve
Improve
Like Article
Like
Save
Share
Report

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

 

Recommended Practice

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");
             
         
    }
}
 
//


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)



Last Updated : 18 May, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads