Given an integer N. The task is to find the Nth prime number.
Examples:
Input : 5
Output : 11Input : 16
Output : 53Input : 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 <bits/stdc++.h> 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<Integer> primes = new ArrayList<Integer>(); // 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
<script> // Javascript program to the nth prime number // initializing the max value var MAX_SIZE = 1000005; // Function to generate N prime numbers using // Sieve of Eratosthenes function SieveOfEratosthenes(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. var IsPrime = Array(MAX_SIZE).fill( true ); var p,i; for (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 (i = p * p; i < MAX_SIZE; i += p) IsPrime[i] = false ; } } // Store all prime numbers for (p = 2; p < MAX_SIZE; p++) if (IsPrime[p]) primes.push(p); } // Driver Code // To store all prime numbers var primes = []; // Function call SieveOfEratosthenes(primes); document.write( "5th prime number is " +primes[4]+ "<br>" ); document.write( "16th prime number is " +primes[15]+ "<br>" ); document.write( "1049th prime number is " +primes[1048]+ "<br>" ); </script> |
5th prime number is 11 16th prime number is 53 1049th prime number is 8377
Another approach :
- for finding prime number at given position write a isPrime function to check number is prime or not
- write a function to get prime number at given position
Below is the implementation of the above approach :
C++
// c++ program to find the n-th prime number #include <bits/stdc++.h> using namespace std; // function to check given number is prime or not // basic idea is numbers not divided by any primes are primes int isPrime( int k) { // Corner cases if (k <= 1) return 0; if (k==2 || k==3) return 1; // below 5 there is only two prime numbers 2 and 3 if (k % 2 == 0 || k % 3 == 0) return 0; // Using concept of prime number can be represented in form of (6*k + 1) or(6*k - 1) for ( int i = 5; i * i <= k; i = i + 6) if (k % i == 0 || k % (i + 2) == 0) return 0; return 1; } // function which gives prime at position n int nThPrime( int n) { int i=2; while (n>0) { // each time if a prime number found decrease n if (isPrime(i)) n--; i++; //increase the integer to go ahead } i-=1; // since decrement of k is being done before //Increment of i , so i should be decreased by 1 return i; } int main() { cout<< "5th prime number is : " <<nThPrime(5)<< "\n" ; cout<< "7th prime number is : " <<nThPrime(7)<< "\n" ; cout<< "10th prime number is : " <<nThPrime(10)<< "\n" ; return 0; } // This code is contributed by Ujjwal Kumar Bhardwaj |
Java
// Java program to find the n-th prime number import java.util.*; class GFG { // function to check given number is prime or not // basic idea is numbers not divided by any primes are // primes static int isPrime( int k) { // Corner cases if (k <= 1 ) return 0 ; if (k == 2 || k == 3 ) return 1 ; // below 5 there is only two prime numbers 2 and 3 if (k % 2 == 0 || k % 3 == 0 ) return 0 ; // Using concept of prime number can be represented // in form of (6*k + 1) or(6*k - 1) for ( int i = 5 ; i * i <= k; i = i + 6 ) if (k % i == 0 || k % (i + 2 ) == 0 ) return 0 ; return 1 ; } // function which gives prime at position n static int nThPrime( int n) { int i = 2 ; while (n > 0 ) { // each time if a prime number found decrease n if (isPrime(i) == 1 ) n--; i++; // increase the integer to go ahead } i -= 1 ; // since decrement of k is being done before // Increment of i , so i should be decreased // by 1 return i; } public static void main(String[] args) { System.out.println( "5th prime number is : " + nThPrime( 5 )); System.out.println( "7th prime number is : " + nThPrime( 7 )); System.out.println( "10th prime number is : " + nThPrime( 10 )); } } // This code is contributed by phasing17 |
Python3
# Python3 program to find the n-th prime number # function to check given number is prime or not # basic idea is numbers not divided by any primes are primes def isPrime(k): # Corner cases if (k < = 1 ): return 0 if (k = = 2 or k = = 3 ): return 1 # below 5 there is only two prime numbers 2 and 3 if (k % 2 = = 0 or k % 3 = = 0 ): return 0 # Using concept of prime number can be represented in form of (6*k + 1) or(6*k - 1) for i in range ( 5 , 1 + int (k * * 0.5 ), 6 ): if (k % i = = 0 or k % (i + 2 ) = = 0 ): return 0 return 1 # function which gives prime at position n def nThPrime(n): i = 2 while (n > 0 ): # each time if a prime number found decrease n if (isPrime(i)): n - = 1 i + = 1 # increase the integer to go ahead i - = 1 # since decrement of k is being done before # Increment of i , so i should be decreased by 1 return i # Driver code print ( "5th prime number is :" , nThPrime( 5 )) print ( "7th prime number is :" , nThPrime( 7 )) print ( "10th prime number is :" , nThPrime( 10 )) # This code is contributed by phasing17 |
C#
// C# program to find the n-th prime number using System; using System.Collections.Generic; class GFG { // function to check given number is prime or not // basic idea is numbers not divided by any primes are // primes static int isPrime( int k) { // Corner cases if (k <= 1) return 0; if (k == 2 || k == 3) return 1; // below 5 there is only two prime numbers 2 and 3 if (k % 2 == 0 || k % 3 == 0) return 0; // Using concept of prime number can be represented // in form of (6*k + 1) or(6*k - 1) for ( int i = 5; i * i <= k; i = i + 6) if (k % i == 0 || k % (i + 2) == 0) return 0; return 1; } // function which gives prime at position n static int nThPrime( int n) { int i = 2; while (n > 0) { // each time if a prime number found decrease n if (isPrime(i) == 1) n--; i++; // increase the integer to go ahead } i -= 1; // since decrement of k is being done before // Increment of i , so i should be decreased // by 1 return i; } public static void Main( string [] args) { Console.WriteLine( "5th prime number is : " + nThPrime(5)); Console.WriteLine( "7th prime number is : " + nThPrime(7)); Console.WriteLine( "10th prime number is : " + nThPrime(10)); } } // This code is contributed by phasing17 |
Javascript
// JS program to find the n-th prime number // function to check given number is prime or not // basic idea is numbers not divided by any primes are primes function isPrime(k) { // Corner cases if (k <= 1) return 0; if (k==2 || k==3) return 1; // below 5 there is only two prime numbers 2 and 3 if (k % 2 == 0 || k % 3 == 0) return 0; // Using concept of prime number can be represented in form of (6*k + 1) or(6*k - 1) for (let i = 5; i * i <= k; i = i + 6) if (k % i == 0 || k % (i + 2) == 0) return 0; return 1; } // function which gives prime at position n function nThPrime(n) { let i=2; while (n>0) { // each time if a prime number found decrease n if (isPrime(i)) n--; i++; //increase the integer to go ahead } i-=1; // since decrement of k is being done before //Increment of i , so i should be decreased by 1 return i; } // Driver code console.log( "5th prime number is : " +nThPrime(5)); console.log( "7th prime number is : " +nThPrime(7)); console.log( "10th prime number is : " +nThPrime(10)); // This code is contributed by phasing17 |
5th prime number is : 11 7th prime number is : 17 10th prime number is : 29
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!