Sum of all the prime numbers with the count of digits ≤ D
Given an integer D, the task is to find the sum of all the prime numbers whose count of digits is less than or equal to D.
Examples:
Input: D = 2
Output: 1060
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43,
47, 53, 59, 61, 67, 71, 73, 79, 83, 89 and 97 are
the prime numbers having digits less than or equal
to 2 and the sum of these prime numbers is 1060.
Input: D = 3
Output: 76127
Approach: Generate all prime numbers using Sieve of Eratosthenes upto maximum D-digit number then find the sum of all the prime numbers in the same range.
Below is the implementation of the above approach:
C++14
#include <bits/stdc++.h>
using namespace std;
void sieve(vector< bool >& prime, int n)
{
prime[0] = false ;
prime[1] = false ;
for ( int p = 2; p * p <= n; p++) {
if (prime[p] == true ) {
for ( int i = p * p; i <= n; i += p)
prime[i] = false ;
}
}
}
int sumPrime( int d)
{
int i;
int maxVal = pow (10, d) - 1;
vector< bool > prime(maxVal + 1);
for (i = 0; i < maxVal + 1; i++)
prime[i] = true ;
sieve(prime, maxVal);
int sum = 0;
for (i = 2; i <= maxVal; i++) {
if (prime[i]) {
sum += i;
}
}
return sum;
}
int main()
{
int d = 3;
cout << sumPrime(d);
return 0;
}
|
Java
class GFG
{
static void sieve( boolean []prime, int n)
{
prime[ 0 ] = false ;
prime[ 1 ] = false ;
for ( int p = 2 ; p * p <= n; p++)
{
if (prime[p] == true )
{
for ( int i = p * p; i <= n; i += p)
prime[i] = false ;
}
}
}
static int sumPrime( int d)
{
int i;
int maxVal = ( int )Math.pow( 10 , d) - 1 ;
boolean prime[] = new boolean [maxVal + 1 ];
for (i = 0 ; i < maxVal + 1 ; i++)
prime[i] = true ;
sieve(prime, maxVal);
int sum = 0 ;
for (i = 2 ; i <= maxVal; i++)
{
if (prime[i])
{
sum += i;
}
}
return sum;
}
public static void main (String[] args)
{
int d = 3 ;
System.out.println(sumPrime(d));
}
}
|
Python3
from math import sqrt
def sieve(prime, n) :
prime[ 0 ] = False ;
prime[ 1 ] = False ;
for p in range ( 2 , int (sqrt(n)) + 1 ) :
if (prime[p] = = True ) :
for i in range ( p * p, n + 1 , p) :
prime[i] = False ;
def sumPrime(d) :
maxVal = ( 10 * * d) - 1 ;
prime = [ True ] * (maxVal + 1 );
sieve(prime, maxVal);
sum = 0 ;
for i in range ( 2 , maxVal + 1 ) :
if (prime[i]) :
sum + = i;
return sum ;
if __name__ = = "__main__" :
d = 3 ;
print (sumPrime(d));
|
C#
using System;
class GFG
{
static void sieve(Boolean []prime, int n)
{
prime[0] = false ;
prime[1] = false ;
for ( int p = 2; p * p <= n; p++)
{
if (prime[p] == true )
{
for ( int i = p * p;
i <= n; i += p)
prime[i] = false ;
}
}
}
static int sumPrime( int d)
{
int i;
int maxVal = ( int )Math.Pow(10, d) - 1;
Boolean []prime = new Boolean[maxVal + 1];
for (i = 0; i < maxVal + 1; i++)
prime[i] = true ;
sieve(prime, maxVal);
int sum = 0;
for (i = 2; i <= maxVal; i++)
{
if (prime[i])
{
sum += i;
}
}
return sum;
}
public static void Main (String[] args)
{
int d = 3;
Console.WriteLine(sumPrime(d));
}
}
|
Javascript
<script>
function sieve(prime, n)
{
prime[0] = false ;
prime[1] = false ;
for (let p = 2; p * p <= n; p++)
{
if (prime[p] == true )
{
for (let i = p * p; i <= n; i += p)
prime[i] = false ;
}
}
}
function sumPrime(d)
{
let maxVal = Math.pow(10, d) - 1;
let prime = new Array(maxVal + 1);
prime.fill( true )
sieve(prime, maxVal);
let sum = 0;
for (let i = 2; i <= maxVal; i++)
{
if (prime[i])
{
sum += i;
}
}
return sum;
}
let d = 3;
document.write(sumPrime(d));
</script>
|
Time Complexity: O(10d * log(log(10d)))
Auxiliary Space: O(10d), where d is a given input.
Last Updated :
28 Dec, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...