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

• Difficulty Level : Easy
• Last Updated : 25 Aug, 2022

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 ``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

 ``

Output:

`1`

Time Complexity: O(k*sqrt(k)) (where k = M-N, N = input, M = first prime no.)

Space Complexity: O(1)

My Personal Notes arrow_drop_up