Find all the prime numbers of given number of digits
Last Updated :
07 Mar, 2022
Given an integer D, the task is to find all the prime numbers having D digits.
Examples:
Input: D = 1
Output: 2 3 5 7
Input: D = 2
Output: 11 13 17 19 23 29 31 37 41 43 47 53 61 67 71 73 79 83 89 97
Approach: Numbers with D digits lie in the range [10(D – 1), 10D – 1]. So, check all the numbers in this interval and to check the number is prime or not, use Sieve of Eratosthenes to generate all the primes.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
const int sz = 1e5;
bool isPrime[sz + 1];
void sieve()
{
memset (isPrime, true , sizeof (isPrime));
isPrime[0] = isPrime[1] = false ;
for ( int i = 2; i * i <= sz; i++) {
if (isPrime[i]) {
for ( int j = i * i; j < sz; j += i) {
isPrime[j] = false ;
}
}
}
}
void findPrimesD( int d)
{
int left = pow (10, d - 1);
int right = pow (10, d) - 1;
for ( int i = left; i <= right; i++) {
if (isPrime[i]) {
cout << i << " " ;
}
}
}
int main()
{
sieve();
int d = 1;
findPrimesD(d);
return 0;
}
|
Java
import java.util.*;
class GFG
{
static int sz = 100000 ;
static boolean isPrime[] = new boolean [sz + 1 ];
static void sieve()
{
for ( int i = 0 ; i <= sz; i++)
isPrime[i] = true ;
isPrime[ 0 ] = isPrime[ 1 ] = false ;
for ( int i = 2 ; i * i <= sz; i++)
{
if (isPrime[i])
{
for ( int j = i * i; j < sz; j += i)
{
isPrime[j] = false ;
}
}
}
}
static void findPrimesD( int d)
{
int left = ( int )Math.pow( 10 , d - 1 );
int right = ( int )Math.pow( 10 , d) - 1 ;
for ( int i = left; i <= right; i++)
{
if (isPrime[i])
{
System.out.print(i + " " );
}
}
}
public static void main(String args[])
{
sieve();
int d = 1 ;
findPrimesD(d);
}
}
|
Python 3
from math import sqrt, pow
sz = 100005
isPrime = [ True for i in range (sz + 1 )]
def sieve():
isPrime[ 0 ] = isPrime[ 1 ] = False
for i in range ( 2 , int (sqrt(sz)) + 1 , 1 ):
if (isPrime[i]):
for j in range (i * i, sz, i):
isPrime[j] = False
def findPrimesD(d):
left = int ( pow ( 10 , d - 1 ))
right = int ( pow ( 10 , d) - 1 )
for i in range (left, right + 1 , 1 ):
if (isPrime[i]):
print (i, end = " " )
if __name__ = = '__main__' :
sieve()
d = 1
findPrimesD(d)
|
C#
using System;
class GFG
{
static int sz = 100000;
static bool []isPrime = new bool [sz + 1];
static void sieve()
{
for ( int i = 0; i <= sz; i++)
isPrime[i] = true ;
isPrime[0] = isPrime[1] = false ;
for ( int i = 2; i * i <= sz; i++)
{
if (isPrime[i])
{
for ( int j = i * i; j < sz; j += i)
{
isPrime[j] = false ;
}
}
}
}
static void findPrimesD( int d)
{
int left = ( int )Math.Pow(10, d - 1);
int right = ( int )Math.Pow(10, d) - 1;
for ( int i = left; i <= right; i++)
{
if (isPrime[i])
{
Console.Write(i + " " );
}
}
}
static public void Main ()
{
sieve();
int d = 1;
findPrimesD(d);
}
}
|
Javascript
<script>
let sz = 100000;
let isPrime = new Array(sz + 1);
isPrime.fill( false );
function sieve()
{
for (let i = 0; i <= sz; i++)
isPrime[i] = true ;
isPrime[0] = isPrime[1] = false ;
for (let i = 2; i * i <= sz; i++)
{
if (isPrime[i])
{
for (let j = i * i; j < sz; j += i)
{
isPrime[j] = false ;
}
}
}
}
function findPrimesD(d)
{
let left = Math.pow(10, d - 1);
let right = Math.pow(10, d) - 1;
for (let i = left; i <= right; i++)
{
if (isPrime[i])
{
document.write(i + " " );
}
}
}
sieve();
let d = 1;
findPrimesD(d);
</script>
|
Time Complexity: O(sqrt(105) + d)
Auxiliary Space: O(105)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...