# Program to find the Nth Prime Number

• Difficulty Level : Hard
• Last Updated : 26 Apr, 2021

Given an integer N. The task is to find the Nth prime number.

Examples:

Input :
Output : 11

Input : 16
Output : 53

Input : 1049
Output : 8377

Approach:

• Find the prime numbers up to MAX_SIZE using Sieve of Eratosthenes.
• Store all primes in a vector.
• For a given number N, return the element at (N-1)th index in a vector.

Below is the implementation of the above approach:

## C++

 `// C++ program to the nth prime number` `#include ``using` `namespace` `std;` `// initializing the max value``#define MAX_SIZE 1000005` `// Function to generate N prime numbers using``// Sieve of Eratosthenes``void` `SieveOfEratosthenes(vector<``int``>& primes)``{``    ``// Create a boolean array "IsPrime[0..MAX_SIZE]" and``    ``// initialize all entries it as true. A value in``    ``// IsPrime[i] will finally be false if i is``    ``// Not a IsPrime, else true.``    ``bool` `IsPrime[MAX_SIZE];``    ``memset``(IsPrime, ``true``, ``sizeof``(IsPrime));` `    ``for` `(``int` `p = 2; p * p < MAX_SIZE; p++) {``        ``// If IsPrime[p] is not changed, then it is a prime``        ``if` `(IsPrime[p] == ``true``) {``            ``// Update all multiples of p greater than or``            ``// equal to the square of it``            ``// numbers which are multiple of p and are``            ``// less than p^2 are already been marked.``            ``for` `(``int` `i = p * p; i < MAX_SIZE; i += p)``                ``IsPrime[i] = ``false``;``        ``}``    ``}` `    ``// Store all prime numbers``    ``for` `(``int` `p = 2; p < MAX_SIZE; p++)``        ``if` `(IsPrime[p])``            ``primes.push_back(p);``}` `// Driver Code``int` `main()``{``    ``// To store all prime numbers``    ``vector<``int``> primes;` `    ``// Function call``    ``SieveOfEratosthenes(primes);` `    ``cout << ``"5th prime number is "` `<< primes[4] << endl;``    ``cout << ``"16th prime number is "` `<< primes[15] << endl;``    ``cout << ``"1049th prime number is "` `<< primes[1048];` `    ``return` `0;``}`

## Java

 `// Java program to the nth prime number ``import` `java.util.ArrayList;``class` `GFG``{``    ` `    ``// initializing the max value``    ``static` `int` `MAX_SIZE = ``1000005``;``    ` `    ``// To store all prime numbers``    ``static` `ArrayList primes =``       ``new` `ArrayList();``    ` `    ``// Function to generate N prime numbers``    ``// using Sieve of Eratosthenes``    ``static` `void` `SieveOfEratosthenes()``    ``{``        ``// Create a boolean array "IsPrime[0..MAX_SIZE]"``        ``// and initialize all entries it as true.``        ``// A value in IsPrime[i] will finally be false``        ``// if i is Not a IsPrime, else true.``        ``boolean` `[] IsPrime = ``new` `boolean``[MAX_SIZE];``        ` `        ``for``(``int` `i = ``0``; i < MAX_SIZE; i++)``            ``IsPrime[i] = ``true``;``        ` `        ``for` `(``int` `p = ``2``; p * p < MAX_SIZE; p++)``        ``{``            ``// If IsPrime[p] is not changed,``            ``// then it is a prime``            ``if` `(IsPrime[p] == ``true``)``            ``{``                ``// Update all multiples of p greater than or``                ``// equal to the square of it``                ``// numbers which are multiple of p and are``                ``// less than p^2 are already been marked.``                ``for` `(``int` `i = p * p; i < MAX_SIZE; i += p)``                    ``IsPrime[i] = ``false``;``            ``}``        ``}``    ` `        ``// Store all prime numbers``        ``for` `(``int` `p = ``2``; p < MAX_SIZE; p++)``        ``if` `(IsPrime[p] == ``true``)``                ``primes.add(p);``    ``}``    ` `    ``// Driver Code``    ``public` `static` `void` `main (String[] args)``    ``{``        ` `        ``// Function call``        ``SieveOfEratosthenes();``    ` `        ``System.out.println(``"5th prime number is "` `+``                                    ``primes.get(``4``));``        ``System.out.println(``"16th prime number is "` `+``                                    ``primes.get(``15``));``        ``System.out.println(``"1049th prime number is "` `+``                                    ``primes.get(``1048``));``    ``}``}` `// This code is contributed by ihritik`

## Python3

 `# Python3 program to the nth prime number ``primes ``=` `[]` `# Function to generate N prime numbers using ``# Sieve of Eratosthenes``def` `SieveOfEratosthenes():``    ` `    ``n ``=` `1000005``    ` `    ``# Create a boolean array "prime[0..n]" and``    ``# initialize all entries it as true. A value``    ``# in prime[i] will finally be false if i is``    ``# Not a prime, else true.``    ``prime ``=` `[``True` `for` `i ``in` `range``(n ``+` `1``)]``    ` `    ``p ``=` `2``    ``while` `(p ``*` `p <``=` `n):``          ` `        ``# 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, n ``+` `1``, p):``                ``prime[i] ``=` `False``                ` `        ``p ``+``=` `1``      ` `    ``# Print all prime numbers``    ``for` `p ``in` `range``(``2``, n ``+` `1``):``        ``if` `prime[p]:``            ``primes.append(p)``  ` `# Driver code``if` `__name__``=``=``'__main__'``:``    ` `    ``# Function call``    ``SieveOfEratosthenes()``    ` `    ``print``(``"5th prime number is"``, primes[``4``]);``    ``print``(``"16th prime number is"``, primes[``15``]);``    ``print``(``"1049th prime number is"``, primes[``1048``]);``    ` `# This code is contributed by grand_master`

## C#

 `// C# program to the nth prime number``using` `System;``using` `System.Collections;` `class` `GFG``{``    ` `// initializing the max value``static` `int` `MAX_SIZE = 1000005;` `// To store all prime numbers``static` `ArrayList primes = ``new` `ArrayList();` `// Function to generate N prime numbers using``// Sieve of Eratosthenes``static` `void` `SieveOfEratosthenes()``{``    ``// Create a boolean array "IsPrime[0..MAX_SIZE]"``    ``// and initialize all entries it as true.``    ``// A value in IsPrime[i] will finally be false``    ``// if i is Not a IsPrime, else true.``    ``bool` `[] IsPrime = ``new` `bool``[MAX_SIZE];``    ` `    ``for``(``int` `i = 0; i < MAX_SIZE; i++)``        ``IsPrime[i] = ``true``;``    ` `    ``for` `(``int` `p = 2; p * p < MAX_SIZE; p++)``    ``{``        ``// If IsPrime[p] is not changed,``        ``// then it is a prime``        ``if` `(IsPrime[p] == ``true``)``        ``{``            ``// Update all multiples of p greater than or``            ``// equal to the square of it``            ``// numbers which are multiple of p and are``            ``// less than p^2 are already been marked.``            ``for` `(``int` `i = p * p; i < MAX_SIZE; i += p)``                ``IsPrime[i] = ``false``;``        ``}``    ``}` `    ``// Store all prime numbers``    ``for` `(``int` `p = 2; p < MAX_SIZE; p++)``    ``if` `(IsPrime[p] == ``true``)``            ``primes.Add(p);``}` `// Driver Code``public` `static` `void` `Main ()``{``    ` `    ``// Function call``    ``SieveOfEratosthenes();` `    ``Console.WriteLine(``"5th prime number is "` `+``                                   ``primes[4]);``    ``Console.WriteLine(``"16th prime number is "` `+``                                   ``primes[15]);``    ``Console.WriteLine(``"1049th prime number is "` `+``                                   ``primes[1048]);``}``}` `// This code is contributed by ihritik`

## Javascript

 ``
Output:
```5th prime number is 11
16th prime number is 53
1049th prime number is 8377```

My Personal Notes arrow_drop_up