# Print the nearest prime number formed by adding prime numbers to N

Given a number N. The task is to print the nearest prime if the number is not prime by making it prime by adding prime numbers sequentially from 2.

Examples:

Input: N = 8
Output: 13
8 is not prime, so add the first prime to it to get 10
10 is not prime, hence add the second prime i.e., 3 to get 13 which is prime.

Input: N = 45
Output: 47

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

Approach Using Sieve of Eratosthenes, mark the prime index by 1 in isprime[] list and store all the prime numbers in a list prime[]. Keep adding prime numbers sequentially to N, till it becomes prime.

Below is the implementation of the above approach:

## C++

 `// C++ program to print the  ` `// nearest prime number by ` `// sequentially adding the ` `// prime numbers  ` `#include ` `using` `namespace` `std; ` ` `  `// Function to store prime ` `// numbers using prime sieve ` `void` `prime_seive(``int` `MAX, vector<``int``> &isprime, ` `                          ``vector<``int``> &prime) ` `{ ` `     `  `    ``// iterate for all ` `    ``// the numbers  ` `    ``int` `i = 2; ` `    ``while` `(i * i <= MAX) ` `    ``{ ` `         `  `        ``// If prime[p] is not changed,  ` `        ``// then it is a prime ` `        ``if` `(isprime[i] == 1) ` `        ``{ ` `             `  `            ``// append the prime ` `            ``// to the list  ` `            ``prime.push_back(i); ` `             `  `            ``// Update all multiples of p ` `            ``for` `(``int` `j = i * 2; j < MAX; j += i) ` `            ``{ ` `                ``isprime[j] = 0; ` `            ``} ` `        ``} ` `                 `  `        ``i += 1; ` `    ``} ` `} ` `         `  `// Function to print  ` `// the nearest prime  ` `int` `printNearest(``int` `N) ` `{ ` `    ``int` `MAX = 1e6; ` `     `  `    ``// store all the  ` `    ``// index with 1  ` `    ``vector<``int``> isprime(MAX, 1); ` ` `  `    ``// 0 and 1 are not prime  ` `    ``isprime[0] = isprime[1] = 0; ` `     `  `    ``// list to store  ` `    ``// prime numbers ` `    ``vector<``int``> prime; ` `     `  `    ``// variable to ` `    ``// add primes  ` `    ``int` `i = 0; ` `     `  `    ``// call the seive function  ` `    ``prime_seive(MAX, isprime, prime); ` `     `  `    ``// Keep on adding prime  ` `    ``// numbers till the nearest  ` `    ``// prime number is achieved  ` `     `  `    ``while` `(!isprime[N]) ` `    ``{ ` `        ``N += prime[i]; ` `        ``i += 1; ` `    ``} ` `     `  `    ``// return the  ` `    ``// nearest prime  ` `    ``return` `N ; ` `} ` ` `  `// Driver Code  ` `int` `main() ` `{ ` `    ``int` `N = 8; ` `    ``printf``(``"%d"``, printNearest(N)); ` `    ``return` `0; ` `} ` ` `  `// This code is contributed ` `// by Harshit Saini `

## Java

 `// Java program to print the  ` `// nearest prime number by ` `// sequentially adding the ` `// prime numbers  ` `import` `java.util.*; ` ` `  `class` `GFG  ` `{ ` ` `  `// Function to store prime ` `// numbers using prime seive ` `static` `void` `prime_seive(``int` `MAX, ``int` `[]isprime, ` `                        ``Vector prime) ` `{ ` `     `  `    ``// iterate for all ` `    ``// the numbers  ` `    ``int` `i = ``2``; ` `    ``while` `(i * i <= MAX) ` `    ``{ ` `         `  `        ``// If prime[p] is not changed,  ` `        ``// then it is a prime ` `        ``if` `(isprime[i] == ``1``) ` `        ``{ ` `             `  `            ``// append the prime ` `            ``// to the list  ` `            ``prime.add(i); ` `             `  `            ``// Update all multiples of p ` `            ``for` `(``int` `j = i * ``2``; ` `                     ``j < MAX; j += i) ` `            ``{ ` `                ``isprime[j] = ``0``; ` `            ``} ` `        ``} ` `                 `  `        ``i += ``1``; ` `    ``} ` `} ` `         `  `// Function to print  ` `// the nearest prime  ` `static` `int` `printNearest(``int` `N) ` `{ ` `    ``int` `MAX = (``int``) 1e6; ` `     `  `    ``// store all the  ` `    ``// index with 1 except 0,1 index  ` `    ``int` `[] isprime = ``new` `int``[MAX]; ` `    ``for``(``int` `i = ``2``; i < MAX; i++) ` `        ``isprime[i] = ``1``; ` `     `  `    ``// list to store  ` `    ``// prime numbers ` `    ``Vector prime = ``new` `Vector(); ` `     `  `    ``// variable to add primes  ` `    ``int` `i = ``0``; ` `     `  `    ``// call the seive function  ` `    ``prime_seive(MAX, isprime, prime); ` `     `  `    ``// Keep on adding prime  ` `    ``// numbers till the nearest  ` `    ``// prime number is achieved  ` `    ``while` `(isprime[N] == ``0``) ` `    ``{ ` `        ``N += prime.get(i); ` `        ``i += ``1``; ` `    ``} ` `     `  `    ``// return the  ` `    ``// nearest prime  ` `    ``return` `N ; ` `} ` ` `  `// Driver Code  ` `public` `static` `void` `main(String[] args) ` `{ ` `    ``int` `N = ``8``; ` `    ``System.out.printf(``"%d"``, printNearest(N)); ` `} ` `}  ` ` `  `// This code is contributed by Rajput-Ji `

## Python3

 `# Python program to print the nearest prime  ` `# number by sequentially adding the prime numbers  ` ` `  `# Function to store prime numbers using prime seive ` `def` `prime_seive(``MAX``, isprime, prime): ` `     `  `    ``# iterate for all the numbers  ` `    ``i ``=` `2` `    ``while` `(i ``*` `i <``=` `MAX``): ` `          `  `        ``# If prime[p] is not changed,  ` `        ``# then it is a prime ` `        ``if` `(isprime[i] ``=``=` `1``): ` `             `  `            ``# append the prime to the list  ` `            ``prime.append(i) ` `             `  `            ``# Update all multiples of p ` `            ``for` `j ``in` `range``(i ``*` `2``, ``MAX``, i): ` `                ``isprime[j] ``=` `0` `                 `  `        ``i ``+``=` `1` `         `  `         `  ` `  `# Function to print the nearest prime  ` `def` `printNearest(N): ` `     `  `    ``MAX` `=` `10``*``*``6`  `     `  `    ``# store all the index with 1  ` `    ``isprime ``=` `[``1``] ``*` `MAX` `     `  `    ``# 0 and 1 are not prime  ` `    ``isprime[``0``] ``=` `isprime[``1``] ``=` `0`  `     `  `    ``# list to store prime numbers ` `    ``prime ``=` `[] ` `     `  `    ``# variable to add primes  ` `    ``i ``=` `0` `     `  `    ``# call the seive function  ` `    ``prime_seive(``MAX``, isprime, prime) ` `     `  `    ``# Keep on adding prime numbers  ` `    ``# till the nearest prime number  ` `    ``# is achieved  ` `    ``while` `not` `isprime[N]: ` `        ``N ``+``=` `prime[i] ` `        ``i ``+``=` `1` `     `  `    ``# return the nearest prime  ` `    ``return` `N  ` `   `  ` `  `# Driver Code  ` `N ``=` `8` `print``(printNearest(N)) `

## C#

 `// C# program to print the  ` `// nearest prime number by ` `// sequentially adding the ` `// prime numbers ` `using` `System; ` `using` `System.Collections.Generic; ` `     `  `class` `GFG  ` `{ ` ` `  `// Function to store prime ` `// numbers using prime seive ` `static` `void` `prime_seive(``int` `MAX, ``int` `[]isprime, ` `                        ``List<``int``> prime) ` `{ ` `     `  `    ``// iterate for all the numbers  ` `    ``int` `i = 2; ` `    ``while` `(i * i <= MAX) ` `    ``{ ` `         `  `        ``// If prime[p] is not changed,  ` `        ``// then it is a prime ` `        ``if` `(isprime[i] == 1) ` `        ``{ ` `             `  `            ``// append the prime to the list  ` `            ``prime.Add(i); ` `             `  `            ``// Update all multiples of p ` `            ``for` `(``int` `j = i * 2; ` `                     ``j < MAX; j += i) ` `            ``{ ` `                ``isprime[j] = 0; ` `            ``} ` `        ``} ` `                 `  `        ``i += 1; ` `    ``} ` `} ` `         `  `// Function to print  ` `// the nearest prime  ` `static` `int` `printNearest(``int` `N) ` `{ ` `    ``int` `MAX = (``int``) 1e6; ` `    ``int` `i = 0; ` `     `  `    ``// store all the  ` `    ``// index with 1 except 0,1 index  ` `    ``int` `[] isprime = ``new` `int``[MAX]; ` `    ``for``(i = 2; i < MAX; i++) ` `        ``isprime[i] = 1; ` `     `  `    ``// list to store  ` `    ``// prime numbers ` `    ``List<``int``> prime = ``new` `List<``int``>(); ` `     `  `    ``// variable to add primes  ` `    ``i = 0; ` `     `  `    ``// call the seive function  ` `    ``prime_seive(MAX, isprime, prime); ` `     `  `    ``// Keep on adding prime  ` `    ``// numbers till the nearest  ` `    ``// prime number is achieved  ` `    ``while` `(isprime[N] == 0) ` `    ``{ ` `        ``N += prime[i]; ` `        ``i += 1; ` `    ``} ` `     `  `    ``// return the  ` `    ``// nearest prime  ` `    ``return` `N; ` `} ` ` `  `// Driver Code  ` `public` `static` `void` `Main(String[] args) ` `{ ` `    ``int` `N = 8; ` `    ``Console.Write(``"{0}"``, printNearest(N)); ` `} ` `} ` ` `  `// This code is contributed by Princi Singh `

Output:

```13
```

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.

Article Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.