Minimum absolute difference of a number and its closest prime

Given a positive integer N, the task is to find the absolute difference of N and the prime number closest to N .
Note: The closest prime to N can be either less than, equal to or greater than N.

Examples:

Input: N = 25
Output: 2
For N = 25
Closest prime greater than 25 is 29. So difference is 4.
Closest prime less than 25 is 23. So difference is 2.
The minimum of these two is 2.



Input: N = 2
Output: 0
As 2 itself is a prime number, closest prime number is 2. So difference is 0.

Approach:

Below is the implementation of the above approach:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find the minimum absolute 
// difference between a number and its closest prime
  
#include <bits/stdc++.h>
  
using namespace std;
  
    // Function to check if a number is prime or not 
    bool isPrime(int N) 
    
        for (int i = 2; i <= sqrt(N); i++) { 
            if (N % i == 0) 
                return false
        
        return true
    
  
    // Function to find the minimum absolute difference 
    // between a number and its closest prime 
    int getDifference(int N) 
    
        if (N == 0) 
            return 2; 
        else if (N == 1) 
            return 1; 
        else if (isPrime(N)) 
            return 0; 
  
        // Variables to store first prime 
        // above and below N 
        int aboveN = -1, belowN = -1; 
        int n1; 
  
        // Finding first prime number greater than N 
        n1 = N + 1; 
        while (true) { 
            if (isPrime(n1)) { 
                aboveN = n1; 
                break
            
            else
                n1++; 
        
  
        // Finding first prime number less than N 
        n1 = N - 1; 
        while (true) { 
            if (isPrime(n1)) { 
                belowN = n1; 
                break
            
            else
                n1--; 
        
  
        // Variables to store the differences 
        int diff1 = aboveN - N; 
        int diff2 = N - belowN; 
  
        return min(diff1, diff2); 
    
  
// Driver code 
int main()
{
    int N = 25; 
   cout << getDifference(N) << endl; 
   return 0;
  // This code is contributed by Ryuga
}
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find the minimum absolute
// difference between a number and its closest prime
class GFG {
  
    // Function to check if a number is prime or not
    static boolean isPrime(int N)
    {
        for (int i = 2; i <= Math.sqrt(N); i++) {
            if (N % i == 0)
                return false;
        }
        return true;
    }
  
    // Function to find the minimum absolute difference
    // between a number and its closest prime
    static int getDifference(int N)
    {
        if (N == 0)
            return 2;
        else if (N == 1)
            return 1;
        else if (isPrime(N))
            return 0;
  
        // Variables to store first prime 
        // above and below N
        int aboveN = -1, belowN = -1;
        int n1;
  
        // Finding first prime number greater than N
        n1 = N + 1;
        while (true) {
            if (isPrime(n1)) {
                aboveN = n1;
                break;
            }
            else
                n1++;
        }
  
        // Finding first prime number less than N
        n1 = N - 1;
        while (true) {
            if (isPrime(n1)) {
                belowN = n1;
                break;
            }
            else
                n1--;
        }
  
        // Variables to store the differences
        int diff1 = aboveN - N;
        int diff2 = N - belowN;
  
        return Math.min(diff1, diff2);
    }
  
    // Driver code
    public static void main(String args[])
    {
        int N = 25;
        System.out.println(getDifference(N));
    }
}
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 program to find the minimum 
# absolute difference between a number 
# and its closest prime
from math import sqrt
  
# Function to check if a number is
# prime or not 
def isPrime(N):
    k = int(sqrt(N)) + 1
    for i in range(2, k, 1):
        if (N % i == 0):
            return False
          
    return True
  
# Function to find the minimum absolute 
# difference between a number and its 
# closest prime 
def getDifference(N):
    if (N == 0):
        return 2
    elif (N == 1):
        return 1
    elif (isPrime(N)):
        return 0
  
    # Variables to store first prime 
    # above and below N 
    aboveN = -1
    belowN = -1
          
    # Finding first prime number 
    # greater than N 
    n1 = N + 1
    while (True):
        if (isPrime(n1)):
            aboveN = n1 
            break
              
        else:
            n1 += 1
  
    # Finding first prime number 
    # less than N 
    n1 = N - 1
    while (True):
        if (isPrime(n1)):
            belowN = n1 
            break
              
        else:
            n1 -= 1
  
    # Variables to store the differences 
    diff1 = aboveN - N
    diff2 = N - belowN 
  
    return min(diff1, diff2)
      
# Driver code 
if __name__ == '__main__':
    N = 25
    print(getDifference(N))
  
# This code is contributed by
# Surendra_Gangwar
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find the minimum absolute
// difference between a number and its closest prime
using System;
class GFG {
  
    // Function to check if a number is prime or not
    static bool isPrime(int N)
    {
        for (int i = 2; i <= Math.Sqrt(N); i++) {
            if (N % i == 0)
                return false;
        }
        return true;
    }
  
    // Function to find the minimum absolute difference
    // between a number and its closest prime
    static int getDifference(int N)
    {
        if (N == 0)
            return 2;
        else if (N == 1)
            return 1;
        else if (isPrime(N))
            return 0;
  
        // Variables to store first prime 
        // above and below N
        int aboveN = -1, belowN = -1;
        int n1;
  
        // Finding first prime number greater than N
        n1 = N + 1;
        while (true) {
            if (isPrime(n1)) {
                aboveN = n1;
                break;
            }
            else
                n1++;
        }
  
        // Finding first prime number less than N
        n1 = N - 1;
        while (true) {
            if (isPrime(n1)) {
                belowN = n1;
                break;
            }
            else
                n1--;
        }
  
        // Variables to store the differences
        int diff1 = aboveN - N;
        int diff2 = N - belowN;
  
        return Math.Min(diff1, diff2);
    }
  
    // Driver code
    public static void Main()
    {
        int N = 25;
        Console.WriteLine(getDifference(N));
    }
}
// This code is contributed by  anuj_67..
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to find the minimum absolute 
// difference between a number and its 
// closest prime
  
// Function to check if a number 
// is prime or not 
function isPrime($N
    for ($i = 2; $i <= sqrt($N); $i++) 
    
        if ($N % $i == 0) 
            return false; 
    
    return true; 
  
// Function to find the minimum absolute difference 
// between a number and its closest prime 
function getDifference($N
    if ($N == 0) 
        return 2; 
    else if ($N == 1) 
        return 1; 
    else if (isPrime($N)) 
        return 0; 
  
    // Variables to store first prime 
    // above and below N 
    $aboveN = -1; $belowN = -1; 
  
    // Finding first prime number greater than N 
    $n1 = $N + 1; 
    while (true)
    
        if (isPrime($n1))
        
            $aboveN = $n1
            break
        
        else
            $n1++; 
    
  
    // Finding first prime number less than N 
    $n1 = $N - 1; 
    while (true) 
    
        if (isPrime($n1))
        
            $belowN = $n1
            break
        
        else
            $n1--; 
    
  
    // Variables to store the differences 
    $diff1 = $aboveN - $N
    $diff2 = $N - $belowN
  
    return min($diff1, $diff2); 
  
// Driver code 
$N = 25; 
echo getDifference($N) . "\n"
  
// This code is contributed
// by Akanksha Rai
chevron_right

Output:
2



Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Article Tags :
Practice Tags :