# Kth prime number greater than N

• Last Updated : 06 Jun, 2021

Given a number N, the task is to print the Kth prime number greater than N.
Note: N and K are so given that answers are always less than 10^6.
Examples:

Input: N = 5, K = 5
Output: 19

Input: N = 10, K = 3
Output: 17

A simple solution for this problem is to iterate from n+1 to 10^6 and for every number, check if it is prime and print the Kth prime number. This solution looks fine if there is only one query. But not efficient if there are multiple queries.
An efficient solution for this problem is to generate all primes less than 10^6 using Sieve of Eratosthenes and iterate from n+1 to 10^6 and then print the Kth prime number.

## C++

 // CPP program to print the Kth prime greater than N#include using namespace std; // set the MAX_SIZE of the array to 10^6const int MAX_SIZE = 1e6; // initialize the prime arraybool prime[MAX_SIZE + 1]; void sieve(){     // set all numbers as prime for time being    memset(prime, true, sizeof(prime));     for (int p = 2; p * p <= MAX_SIZE; p++) {         // if prime[p] is not changed, then it is a prime        if (prime[p] == true) {             // update all multiples of p            for (int i = p * p; i <= MAX_SIZE; i += p)                prime[i] = false;        }    }}// Function to find the kth prime greater than nint kthPrimeGreaterThanN(int n, int k){     int res = -1;    // looping through the numbers greater than n    for (int i = n + 1; i < MAX_SIZE; i++) {         // decrement k if i is prime        if (prime[i] == true)            k--;         // store the kth prime greater than n        if (k == 0) {            res = i;            break;        }    }     return res;} // Driver codeint main(){     sieve();    int n = 2, k = 15;     // Print the kth prime number greater than n    cout << kthPrimeGreaterThanN(n, k);    return 0;}

## Java

 // Java program to print the// Kth prime greater than Nimport java.util.*; class GFG{ // set the MAX_SIZE of the array to 10^6static int MAX_SIZE = (int) 1e6; // initialize the prime arraystatic boolean []prime = new boolean[MAX_SIZE + 1]; static void sieve(){     // set all numbers as prime for time being    Arrays.fill(prime, true);     for (int p = 2; p * p <= MAX_SIZE; p++)    {         // if prime[p] is not changed,        // then it is a prime        if (prime[p] == true)        {             // update all multiples of p            for (int i = p * p;                     i <= MAX_SIZE; i += p)                prime[i] = false;        }    }} // Function to find the kth prime greater than nstatic int kthPrimeGreaterThanN(int n, int k){     int res = -1;         // looping through the numbers greater than n    for (int i = n + 1; i < MAX_SIZE; i++)    {         // decrement k if i is prime        if (prime[i] == true)            k--;         // store the kth prime greater than n        if (k == 0)        {            res = i;            break;        }    }    return res;} // Driver codepublic static void main(String[] args){    sieve();    int n = 2, k = 15;     // Print the kth prime number greater than n    System.out.println(kthPrimeGreaterThanN(n, k));}} // This code is contributed by 29AjayKumar

## Python 3

 # Python 3 program to print the Kth# prime greater than N # set the MAX_SIZE of the array to 10^6MAX_SIZE = int(1e6) # initialize the prime arrayprime = [True] * (MAX_SIZE + 1) # Code for Sieve of Eratosthenesdef sieve():    p = 2         while (p * p <= MAX_SIZE):                 # if prime[p] is not changed,        # then it is a prime        if (prime[p] == True):                         # update all multiples of p            for i in range(p * p, MAX_SIZE, p):                prime[i] = False        p += 1 # Function to find the kth prime# greater than ndef kthPrimeGreaterThanN(n, k):    res = -1         # looping through the numbers    # greater than n    for i in range(n + 1, MAX_SIZE):                 # decrement k if i is prime        if (prime[i] == True):            k -= 1                 # store the kth prime greater than n        if (k == 0):            res = i            break         return res # Driver Codeif __name__=='__main__':    n = 2    k = 15    sieve()         # Print the kth prime number    # greater than n    print(kthPrimeGreaterThanN(n, k))     # This code is contributed by Rupesh Rao

## C#

 // C# program to print the// Kth prime greater than Nusing System;using System.Collections.Generic;     class GFG{ // set the MAX_SIZE of the array to 10^6static int MAX_SIZE = (int) 1e6; // initialize the prime arraystatic Boolean []prime = new Boolean[MAX_SIZE + 1]; static void sieve(){     // set all numbers as prime for time being    for (int i = 0; i < MAX_SIZE + 1; i++)        prime[i] = true;     for (int p = 2; p * p <= MAX_SIZE; p++)    {         // if prime[p] is not changed,        // then it is a prime        if (prime[p] == true)        {             // update all multiples of p            for (int i = p * p;                     i <= MAX_SIZE; i += p)                prime[i] = false;        }    }} // Function to find the kth prime greater than nstatic int kthPrimeGreaterThanN(int n, int k){     int res = -1;         // looping through the numbers greater than n    for (int i = n + 1; i < MAX_SIZE; i++)    {         // decrement k if i is prime        if (prime[i] == true)            k--;         // store the kth prime greater than n        if (k == 0)        {            res = i;            break;        }    }    return res;} // Driver codepublic static void Main(String[] args){    sieve();    int n = 2, k = 15;     // Print the kth prime number greater than n    Console.WriteLine(kthPrimeGreaterThanN(n, k));}} // This code is contributed by Rajput-Ji

## Javascript



Output:

53

My Personal Notes arrow_drop_up