Skip to content
Related Articles

Related Articles

Improve Article

Find the minimum number to be added to N to make it a prime number

  • Difficulty Level : Easy
  • Last Updated : 12 Apr, 2021
Geek Week

Given an integer N, the task is to find the minimum number K to be added to N such that N + K becomes a prime number.
Examples: 
 

Input: N = 10 
Output:
Explanation: 
1 is the minimum number to be added to N such that 10 + 1 = 11 is a prime number
Input: N = 20 
Output:
 

 

Approach: The idea is to check whether the number is a prime or not by incrementing the value to be added K by 1 in each iteration. Therefore, the following steps can be followed to compute the answer: 
 

  1. Initially, check whether the given number is prime or not. If it is, then the value to be added(K) is 0.
  2. Now, in every iteration, increment the value of N by 1 and check if the number is prime or not. Let the first value at which N becomes a prime is M. Then, the minimum value that needs to be added to make N prime is M – N.

Below is the implementation of the above approach:
 



C++




// C++ program to find the minimum
// number to be added to N to
// make it a prime number
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if a given number
// is a prime or not
bool isPrime(int n)
{
    // Base cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    // For all the remaining numbers, check if
    // any number is a factor if the number
    // or not
    for (int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    // If none of the above numbers are the
    // factors for the number, then the
    // given number is prime
    return true;
}
 
// Function to return the smallest
// number to be added to make a
// number prime
int findSmallest(int N)
{
 
    // Base case
    if (N == 0)
        return 2;
    if (N == 1)
        return 1;
 
    int prime = N, counter = 0;
    bool found = false;
 
    // Loop continuously until isPrime returns
    // true for a number greater than n
    while (!found) {
        if (isPrime(prime))
            found = true;
        else {
 
            // If the number is not a prime, then
            // increment the number by 1 and the
            // counter which stores the number
            // to be added
            prime++;
            counter++;
        }
    }
 
    return counter;
}
 
// Driver code
int main()
{
    int N = 10;
 
    cout << findSmallest(N);
 
    return 0;
}

Java




// Java program to find the minimum
// number to be added to N to
// make it a prime number
import java.util.*;
 
class GFG{
  
// Function to check if a given number
// is a prime or not
static boolean isPrime(int n)
{
    // Base cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
  
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
  
    // For all the remaining numbers, check if
    // any number is a factor if the number
    // or not
    for (int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
  
    // If none of the above numbers are the
    // factors for the number, then the
    // given number is prime
    return true;
}
  
// Function to return the smallest
// number to be added to make a
// number prime
static int findSmallest(int N)
{
  
    // Base case
    if (N == 0)
        return 2;
    if (N == 1)
        return 1;
  
    int prime = N, counter = 0;
    boolean found = false;
  
    // Loop continuously until isPrime returns
    // true for a number greater than n
    while (!found) {
        if (isPrime(prime))
            found = true;
        else {
  
            // If the number is not a prime, then
            // increment the number by 1 and the
            // counter which stores the number
            // to be added
            prime++;
            counter++;
        }
    }
  
    return counter;
}
  
// Driver code
public static void main(String[] args)
{
    int N = 10;
  
    System.out.print(findSmallest(N));
}
}
 
// This code is contributed by sapnasingh4991

Python3




# Python 3 program to find the minimum
# number to be added to N to
# make it a prime number
 
# Function to check if a given number
# is a prime or not
def isPrime(n):
 
    # Base cases
    if (n <= 1):
        return False
    if (n <= 3):
        return True
  
    # This is checked so that we can skip
    # middle five numbers in below loop
    if (n % 2 == 0 or n % 3 == 0):
        return False
  
    # For all the remaining numbers, check if
    # any number is a factor if the number
    # or not
    i = 5
    while (i * i <= n ):
        if (n % i == 0 or n % (i + 2) == 0):
            return False
        i += 6
  
    # If none of the above numbers are the
    # factors for the number, then the
    # given number is prime
    return True
  
# Function to return the smallest
# number to be added to make a
# number prime
def findSmallest(N):
  
    # Base case
    if (N == 0):
        return 2
    if (N == 1):
        return 1
  
    prime , counter = N, 0
    found = False
  
    # Loop continuously until isPrime returns
    # true for a number greater than n
    while (not found):
        if (isPrime(prime)):
            found = True
        else :
  
            # If the number is not a prime, then
            # increment the number by 1 and the
            # counter which stores the number
            # to be added
            prime += 1
            counter += 1
    return counter
  
# Driver code
if __name__ == "__main__":
 
    N = 10
  
    print(findSmallest(N))
  
# This code is contributed by chitranayal
   

C#




// C# program to find the minimum
// number to be added to N to
// make it a prime number
using System;
 
class GFG{
 
// Function to check if a given number
// is a prime or not
static bool isPrime(int n)
{
    // Base cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    // For all the remaining numbers, check if
    // any number is a factor if the number
    // or not
    for (int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    // If none of the above numbers are the
    // factors for the number, then the
    // given number is prime
    return true;
}
 
// Function to return the smallest
// number to be added to make a
// number prime
static int findSmallest(int N)
{
 
    // Base case
    if (N == 0)
        return 2;
    if (N == 1)
        return 1;
 
    int prime = N, counter = 0;
    bool found = false;
 
    // Loop continuously until isPrime returns
    // true for a number greater than n
    while (!found) {
        if (isPrime(prime))
            found = true;
        else {
 
            // If the number is not a prime, then
            // increment the number by 1 and the
            // counter which stores the number
            // to be added
            prime++;
            counter++;
        }
    }
 
    return counter;
}
 
// Driver code
public static void Main()
{
    int N = 10;
 
    Console.Write(findSmallest(N));
}
}
 
// This code is contributed by AbhiThakur

Javascript




<script>
 
// Javascript program to find the minimum
// number to be added to N to
// make it a prime number
 
// Function to check if a given number
// is a prime or not
function isPrime(n)
{
 
    // Base cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    // For all the remaining numbers, check if
    // any number is a factor if the number
    // or not
    for (var i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    // If none of the above numbers are the
    // factors for the number, then the
    // given number is prime
    return true;
}
 
// Function to return the smallest
// number to be added to make a
// number prime
function findSmallest(N)
{
 
    // Base case
    if (N == 0)
        return 2;
    if (N == 1)
        return 1;
 
    var prime = N, counter = 0;
    var found = false;
 
    // Loop continuously until isPrime returns
    // true for a number greater than n
    while (!found)
    {
        if (isPrime(prime))
            found = true;
        else
        {
 
            // If the number is not a prime, then
            // increment the number by 1 and the
            // counter which stores the number
            // to be added
            prime++;
            counter++;
        }
    }
 
    return counter;
}
 
// Driver code
var N = 10;
document.write( findSmallest(N));
 
// This code is contributed by noob2000.
</script>
Output: 
1

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :