Write a program to find sum of all prime numbers between 1 to n.
Examples:
Input : 10 Output : 17 Explanation : Primes between 1 to 10 : 2, 3, 5, 7. Input : 11 Output : 28 Explanation : Primes between 1 to 11 : 2, 3, 5, 7, 11.
A simple solution is to traverse all numbers from 1 to n. For every number, check if it is a prime. If yes, add it to result.
An efficient solution is to use Sieve of Eratosthenes to find all prime numbers from till n and then do their sum.
C++
// C++ program to find sum of primes in // range from 1 to n. #include <bits/stdc++.h> using namespace std;
// Returns sum of primes in range from // 1 to n. int sumOfPrimes( int n)
{ // Array to store prime numbers
bool prime[n + 1];
// 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.
memset (prime, true , n + 1);
for ( int p = 2; p * p <= n; p++) {
// If prime[p] is not changed, then
// it is a prime
if (prime[p] == true ) {
// Update all multiples of p
for ( int i = p * 2; i <= n; i += p)
prime[i] = false ;
}
}
// Return sum of primes generated through
// Sieve.
int sum = 0;
for ( int i = 2; i <= n; i++)
if (prime[i])
sum += i;
return sum;
} // Driver code int main()
{ int n = 11;
cout << sumOfPrimes(n);
return 0;
} |
Java
// Java program to find // sum of primes in // range from 1 to n. import java.io.*;
import java.util.*;
class GFG {
// Returns sum of primes
// in range from
// 1 to n.
static int sumOfPrimes( int n)
{
// Array to store prime numbers
boolean prime[]= new boolean [n + 1 ];
// 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.
Arrays.fill(prime, true );
for ( int p = 2 ; p * p <= n; p++) {
// If prime[p] is not changed, then
// it is a prime
if (prime[p] == true ) {
// Update all multiples of p
for ( int i = p * 2 ; i <= n; i += p)
prime[i] = false ;
}
}
// Return sum of primes generated through
// Sieve.
int sum = 0 ;
for ( int i = 2 ; i <= n; i++)
if (prime[i])
sum += i;
return sum;
}
// Driver code
public static void main(String args[])
{
int n = 11 ;
System.out.print(sumOfPrimes(n));
}
} // This code is contributed // by Nikita Tiwari. |
Python3
# Python program to find sum of primes # in range from 1 to n. # Returns sum of primes in range from # 1 to n def sumOfPrimes(n):
# list to store prime numbers
prime = [ True ] * (n + 1 )
# 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.
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
i = p * 2
while i < = n:
prime[i] = False
i + = p
p + = 1 # Return sum of primes generated through
# Sieve.
sum = 0
for i in range ( 2 , n + 1 ):
if (prime[i]):
sum + = i
return sum
# Driver code n = 11
print (sumOfPrimes(n))
# This code is contributed by Sachin Bisht |
C#
// C# program to find // sum of primes in // range from 1 to n. using System;
class GFG {
// Returns sum of primes
// in range from
// 1 to n.
static int sumOfPrimes( int n)
{
// Array to store prime numbers
bool []prime= new bool [n + 1];
// 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.
for ( int i = 0; i < n + 1; i++)
prime[i] = true ;
for ( int p = 2; p * p <= n; p++)
{
// If prime[p] is not changed,
// then it is a prime
if (prime[p] == true )
{
// Update all multiples of p
for ( int i = p * 2; i <= n; i += p)
prime[i] = false ;
}
}
// Return sum of primes
// generated through Sieve.
int sum = 0;
for ( int i = 2; i <= n; i++)
if (prime[i])
sum += i;
return sum;
}
// Driver code
public static void Main()
{
int n = 11;
Console.Write(sumOfPrimes(n));
}
} // This code is contributed by nitin mittal. |
PHP
<?php // PHP program to find // sum of primes in // range from 1 to n. // Returns sum of primes // in range from 1 to n. function sumOfPrimes( $n )
{ // Array to store prime
// numbers bool prime[n + 1];
// 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 = array_fill (0, $n + 1, true);
for ( $p = 2;
$p * $p <= $n ; $p ++)
{
// If prime[p] is not changed,
// then it is a prime
if ( $prime [ $p ] == true)
{
// Update all multiples of p
for ( $i = $p * 2;
$i <= $n ; $i += $p )
$prime [ $i ] = false;
}
}
// Return sum of primes
// generated through Sieve.
$sum = 0;
for ( $i = 2; $i <= $n ; $i ++)
if ( $prime [ $i ])
$sum += $i ;
return $sum ;
} // Driver code $n = 11;
echo sumOfPrimes( $n );
// This code is contributed // by ajit ?> |
Javascript
<script> // Javascript program to find
// sum of primes in
// range from 1 to n.
// Returns sum of primes
// in range from
// 1 to n.
function sumOfPrimes(n)
{
// Array to store prime numbers
let prime = new Array(n + 1);
// 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.
for (let i = 0; i < n + 1; i++)
prime[i] = true ;
for (let p = 2; p * p <= n; p++)
{
// If prime[p] is not changed,
// then it is a prime
if (prime[p] == true )
{
// Update all multiples of p
for (let i = p * 2; i <= n; i += p)
prime[i] = false ;
}
}
// Return sum of primes
// generated through Sieve.
let sum = 0;
for (let i = 2; i <= n; i++)
if (prime[i])
sum += i;
return sum;
}
let n = 11;
document.write(sumOfPrimes(n));
</script> |
Output:
28
Time Complexity: O(nloglogn)
Auxiliary Space: O(n)