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

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: 1
Explanation:
1 is the minimum number to be added to N such that 10 + 1 = 11 is a prime number

Input: N = 20
Output: 3

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 `

Output:

```1
```

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up

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.