Program to find the Nth Prime Number
Last Updated :
07 Sep, 2022
Given an integer N. The task is to find the Nth prime number.
Examples:
Input : 5
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++
#include <bits/stdc++.h>
using namespace std;
#define MAX_SIZE 1000005
void SieveOfEratosthenes(vector< int >& primes)
{
bool IsPrime[MAX_SIZE];
memset (IsPrime, true , sizeof (IsPrime));
for ( int p = 2; p * p < MAX_SIZE; p++) {
if (IsPrime[p] == true ) {
for ( int i = p * p; i < MAX_SIZE; i += p)
IsPrime[i] = false ;
}
}
for ( int p = 2; p < MAX_SIZE; p++)
if (IsPrime[p])
primes.push_back(p);
}
int main()
{
vector< int > primes;
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
import java.util.ArrayList;
class GFG
{
static int MAX_SIZE = 1000005 ;
static ArrayList<Integer> primes =
new ArrayList<Integer>();
static void SieveOfEratosthenes()
{
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] == true )
{
for ( int i = p * p; i < MAX_SIZE; i += p)
IsPrime[i] = false ;
}
}
for ( int p = 2 ; p < MAX_SIZE; p++)
if (IsPrime[p] == true )
primes.add(p);
}
public static void main (String[] args)
{
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 ));
}
}
|
Python3
primes = []
def SieveOfEratosthenes():
n = 1000005
prime = [ True for i in range (n + 1 )]
p = 2
while (p * p < = n):
if (prime[p] = = True ):
for i in range (p * p, n + 1 , p):
prime[i] = False
p + = 1
for p in range ( 2 , n + 1 ):
if prime[p]:
primes.append(p)
if __name__ = = '__main__' :
SieveOfEratosthenes()
print ( "5th prime number is" , primes[ 4 ]);
print ( "16th prime number is" , primes[ 15 ]);
print ( "1049th prime number is" , primes[ 1048 ]);
|
C#
using System;
using System.Collections;
class GFG
{
static int MAX_SIZE = 1000005;
static ArrayList primes = new ArrayList();
static void SieveOfEratosthenes()
{
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] == true )
{
for ( int i = p * p; i < MAX_SIZE; i += p)
IsPrime[i] = false ;
}
}
for ( int p = 2; p < MAX_SIZE; p++)
if (IsPrime[p] == true )
primes.Add(p);
}
public static void Main ()
{
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]);
}
}
|
Javascript
<script>
var MAX_SIZE = 1000005;
function SieveOfEratosthenes(primes)
{
var IsPrime = Array(MAX_SIZE).fill( true );
var p,i;
for (p = 2; p * p < MAX_SIZE;p++)
{
if (IsPrime[p] == true )
{
for (i = p * p; i < MAX_SIZE; i += p)
IsPrime[i] = false ;
}
}
for (p = 2; p < MAX_SIZE; p++)
if (IsPrime[p])
primes.push(p);
}
var primes = [];
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>
|
Output
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++
#include <bits/stdc++.h>
using namespace std;
int isPrime( int k)
{
if (k <= 1)
return 0;
if (k==2 || k==3)
return 1;
if (k % 2 == 0 || k % 3 == 0)
return 0;
for ( int i = 5; i * i <= k; i = i + 6)
if (k % i == 0 || k % (i + 2) == 0)
return 0;
return 1;
}
int nThPrime( int n)
{
int i=2;
while (n>0)
{
if (isPrime(i))
n--;
i++;
}
i-=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;
}
|
Java
import java.util.*;
class GFG {
static int isPrime( int k)
{
if (k <= 1 )
return 0 ;
if (k == 2 || k == 3 )
return 1 ;
if (k % 2 == 0 || k % 3 == 0 )
return 0 ;
for ( int i = 5 ; i * i <= k; i = i + 6 )
if (k % i == 0 || k % (i + 2 ) == 0 )
return 0 ;
return 1 ;
}
static int nThPrime( int n)
{
int i = 2 ;
while (n > 0 )
{
if (isPrime(i) == 1 )
n--;
i++;
}
i -= 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 ));
}
}
|
Python3
def isPrime(k):
if (k < = 1 ):
return 0
if (k = = 2 or k = = 3 ):
return 1
if (k % 2 = = 0 or k % 3 = = 0 ):
return 0
for i in range ( 5 , 1 + int (k * * 0.5 ), 6 ):
if (k % i = = 0 or k % (i + 2 ) = = 0 ):
return 0
return 1
def nThPrime(n):
i = 2
while (n > 0 ):
if (isPrime(i)):
n - = 1
i + = 1
i - = 1
return i
print ( "5th prime number is :" , nThPrime( 5 ))
print ( "7th prime number is :" , nThPrime( 7 ))
print ( "10th prime number is :" , nThPrime( 10 ))
|
C#
using System;
using System.Collections.Generic;
class GFG
{
static int isPrime( int k)
{
if (k <= 1)
return 0;
if (k == 2 || k == 3)
return 1;
if (k % 2 == 0 || k % 3 == 0)
return 0;
for ( int i = 5; i * i <= k; i = i + 6)
if (k % i == 0 || k % (i + 2) == 0)
return 0;
return 1;
}
static int nThPrime( int n)
{
int i = 2;
while (n > 0) {
if (isPrime(i) == 1)
n--;
i++;
}
i -= 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));
}
}
|
Javascript
function isPrime(k)
{
if (k <= 1)
return 0;
if (k==2 || k==3)
return 1;
if (k % 2 == 0 || k % 3 == 0)
return 0;
for (let i = 5; i * i <= k; i = i + 6)
if (k % i == 0 || k % (i + 2) == 0)
return 0;
return 1;
}
function nThPrime(n)
{
let i=2;
while (n>0)
{
if (isPrime(i))
n--;
i++;
}
i-=1;
return i;
}
console.log( "5th prime number is : " +nThPrime(5));
console.log( "7th prime number is : " +nThPrime(7));
console.log( "10th prime number is : " +nThPrime(10));
|
Output
5th prime number is : 11
7th prime number is : 17
10th prime number is : 29
Share your thoughts in the comments
Please Login to comment...