Sum of the first N Prime numbers
Last Updated :
23 Mar, 2021
Given an integer ‘n’, the task is to find the sum of first ‘n’ prime numbers.
First few prime numbers are: 2, 3, 5, 7, 11, 13, 17, 19, 23, ……
Examples:
Input: N = 4
Output: 17
2, 3, 5, 7 are first 4 prime numbers so their sum is equal to 17
Input: N = 40
Output: 3087
Approach:
- Create a sieve which will help us to identify if the number is prime or not in O(1) time.
- Run a loop starting from 1 until and unless we find n prime numbers.
- Add all the prime numbers and neglect those which are not prime.
- Then, display the sum of 1st N prime numbers.
Below is the implementation of the above solution
C++
#include <bits/stdc++.h>
using namespace std;
#define MAX 10000
bool prime[MAX + 1];
void SieveOfEratosthenes()
{
memset (prime, true , sizeof (prime));
prime[1] = false ;
for ( int p = 2; p * p <= MAX; p++) {
if (prime[p] == true ) {
for ( int i = p * 2; i <= MAX; i += p)
prime[i] = false ;
}
}
}
int solve( int n)
{
int count = 0, num = 1;
long long int sum = 0;
while (count < n) {
if (prime[num]) {
sum += num;
count++;
}
num++;
}
return sum;
}
int main()
{
SieveOfEratosthenes();
int n = 4;
cout << "Sum of 1st N prime numbers are :" << solve(n);
return 0;
}
|
Java
public class Improve {
final static double MAX = 10000 ;
static boolean prime[] = new boolean [( int ) (MAX + 1.0 )] ;
static void SieveOfEratosthenes()
{
for ( int i = 0 ; i <= MAX; i++)
prime[i] = true ;
prime[ 1 ] = false ;
for ( int p = 2 ; p * p <= MAX; p++) {
if (prime[p] == true ) {
for ( int i = p * 2 ; i <= MAX; i += p)
prime[i] = false ;
}
}
}
static int solve( int n)
{
int count = 0 , num = 1 ;
long sum = 0 ;
while (count < n) {
if (prime[num]) {
sum += num;
count++;
}
num++;
}
return ( int ) sum;
}
public static void main(String args[])
{
SieveOfEratosthenes();
int n = 4 ;
System.out.println( "Sum of 1st N prime numbers are :" + solve(n));
}
}
|
Python 3
MAX = 10000
prime = [ True for i in range ( MAX + 1 )]
def SieveOfEratosthenes():
prime[ 1 ] = False
for p in range ( 2 , MAX + 1 ):
if (prime[p] = = True ):
i = p * 2
while (i < = MAX ):
prime[i] = False
i = i + p
def solve( n):
count = 0
num = 1
total = 0
while (count < n):
if ( prime[num] ):
total = total + num
count = count + 1
num = num + 1
return total
SieveOfEratosthenes()
n = 4
print ( "Sum of 1st N prime " +
"numbers are :" , solve(n))
|
C#
using System;
public class GFG{
static double MAX = 10000 ;
static bool []prime = new bool [( int )(MAX + 1.0)] ;
static void SieveOfEratosthenes()
{
for ( int i = 0; i <= MAX; i++)
prime[i] = true ;
prime[1] = false ;
for ( int p = 2; p * p <= MAX; p++) {
if (prime[p] == true ) {
for ( int i = p * 2; i <= MAX; i += p)
prime[i] = false ;
}
}
}
static int solve( int n)
{
int count = 0, num = 1;
long sum = 0;
while (count < n) {
if (prime[num]) {
sum += num;
count++;
}
num++;
}
return ( int ) sum;
}
static public void Main (){
SieveOfEratosthenes();
int n = 4;
Console.WriteLine( "Sum of 1st N prime numbers are :" + solve(n));
}
}
|
Javascript
<script>
var MAX = 10000 ;
var prime = Array.from({length: parseInt( (MAX + 1.0))}, (_, i) => false );
function SieveOfEratosthenes()
{
for (i = 0; i <= MAX; i++)
prime[i] = true ;
prime[1] = false ;
for (p = 2; p * p <= MAX; p++) {
if (prime[p] == true ) {
for (i = p * 2; i <= MAX; i += p)
prime[i] = false ;
}
}
}
function solve(n)
{
var count = 0, num = 1;
var sum = 0;
while (count < n) {
if (prime[num]) {
sum += num;
count++;
}
num++;
}
return parseInt( sum);
}
SieveOfEratosthenes();
var n = 4;
document.write( "Sum of 1st N prime numbers are :" + solve(n));
</script>
|
Output:
Sum of 1st N prime numbers are :17
Note(For competitive programming): In a problem which contains a large number of queries, a vector can be used to store all the prime numbers in the range of 10^8, this will take extra O(N) space. We can also use prefix array to store the sum of first N prime numbers in the range of 10^8.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...