Sum of all the prime numbers in a given range

Given a range [l, r], the task is to find the sum of all the prime numbers within that range.

Examples:

Input : l=1 and r=6
Output : 10


Input : l=4 and r=13
Output : 36

Approach 1: (Naive Approach)
Iterate the loop from ‘l’ to ‘r’ and add all the numbers which are prime.

Below is the implementation of the above approach:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ Program to computer sum of prime number
// in a given range
#include <iostream>
using namespace std;
  
// Method to compute the prime number
// Time Complexity is O(sqrt(N))
bool checkPrime(int numberToCheck)
{
    if(numberToCheck == 1) {
        return false;
    }
    for (int i = 2; i*i <= numberToCheck; i++) {
        if (numberToCheck % i == 0) {
            return false;
        }
    }
    return true;
}
  
// Method to iterate the loop from l to r
// If the current number is prime, sum the value
int primeSum(int l, int r)
{
    int sum = 0;
    for (int i = r; i >= l; i--) {
  
        // Check for prime
        bool isPrime = checkPrime(i);
        if (isPrime) {
  
            // Sum the prime number
            sum = sum + i;
        }
    }
    return sum;
}
// Time Complexity is O(r x sqrt(N))
  
//Driver code
int main()
{
    int l = 4, r = 13;
  
    // Call the method with l and r
    cout << primeSum(l, r);
}
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java Program to computer sum of prime number
// in a given range
public class GFG {
  
    // Method to compute the prime number
    // Time Complexity is O(sqrt(N))
    static boolean checkPrime(int numberToCheck)
    {
        if(numberToCheck == 1) {
            return false;
        }
        for (int i = 2; i*i <= numberToCheck; i++) {
            if (numberToCheck % i == 0) {
                return false;
            }
        }
        return true;
    }
  
    // Method to iterate the loop from l to r
    // If prime number detects, sum the value
    static int primeSum(int l, int r)
    {
        int sum = 0;
        for (int i = r; i >= l; i--) {
  
            // Check for prime
            boolean isPrime = checkPrime(i);
            if (isPrime) {
  
                // Sum the prime number
                sum = sum + i;
            }
        }
        return sum;
    }
    // Time Complexity is O(r x sqrt(N))
  
    // Driver code
    public static void main(String[] args)
    {
        int l = 4, r = 13;
  
        // Call the method with l and r
        System.out.println(primeSum(l, r));
    }
}
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 Program to computer sum 
# of prime number in a given range
  
# from math lib import sqrt method
from math import sqrt
  
# Function to compute the prime number 
# Time Complexity is O(sqrt(N))
def checkPrime(numberToCheck) :
  
    if numberToCheck == 1 :
        return False
  
    for i in range(2, int(sqrt(numberToCheck)) + 1) :
  
        if numberToCheck % i == 0 :
            return False
  
    return True
  
# Function to iterate the loop 
# from l to r. If the current
# number is prime, sum the value 
def primeSum(l, r) :
  
    sum = 0
  
    for i in range(r, (l - 1), -1) :
  
        # Check for prime 
        isPrime = checkPrime(i)
          
        if (isPrime) :
  
            # Sum the prime number
            sum += i
  
    return sum
  
# Time Complexity is O(r x sqrt(N)) 
  
# Driver code     
if __name__ == "__main__" :
  
    l, r = 4, 13
  
    # Call the function with l and r 
    print(primeSum(l, r))
  
# This code is contributed 
# by ANKITRAI1
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# Program to computer sum 
// of prime number in a given range
using System;
  
class GFG
{
  
// Method to compute the prime 
// number Time Complexity is O(sqrt(N))
static bool checkPrime(int numberToCheck)
{
    if(numberToCheck == 1) 
    {
        return false;
    }
    for (int i = 2;
             i * i <= numberToCheck; i++) 
    {
        if (numberToCheck % i == 0) 
        {
            return false;
        }
    }
    return true;
}
  
// Method to iterate the loop from l to r
// If prime number detects, sum the value
static int primeSum(int l, int r)
{
    int sum = 0;
    for (int i = r; i >= l; i--)
    {
  
        // Check for prime
        bool isPrime = checkPrime(i);
        if (isPrime)
        {
  
            // Sum the prime number
            sum = sum + i;
        }
    }
    return sum;
}
// Time Complexity is O(r x sqrt(N))
  
// Driver code
public static void Main()
{
    int l = 4, r = 13;
  
    // Call the method with l and r
    Console.Write(primeSum(l, r));
}
}
  
// This code is contributed 
// by ChitraNayal
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP Program to computer sum of
// prime number in a given range 
  
// Method to compute the prime number 
// Time Complexity is O(sqrt(N)) 
function checkPrime($numberToCheck
    if($numberToCheck == 1) 
    
        return false; 
    
    for ($i = 2; $i * $i <= $numberToCheck; $i++)
    
        if ($numberToCheck % $i == 0) 
        
            return false; 
        
    
    return true; 
  
// Method to iterate the loop from 
// l to r. If the current number
// is prime, sum the value 
function primeSum($l, $r
    $sum = 0; 
    for ($i = $r; $i >= $l; $i--) 
    
  
        // Check for prime 
        $isPrime = checkPrime($i); 
        if ($isPrime
        
  
            // Sum the prime number 
            $sum = $sum + $i
        
    
    return $sum
  
// Time Complexity is O(r x sqrt(N)) 
  
// Driver code 
$l = 4; $r = 13; 
  
// Call the method with l and r 
echo primeSum($l, $r); 
  
// This code is contributed by ajit
?>
chevron_right


Output:
36

Time Complexity:
Space Complexity:

Approach 2: (Dynamic Programming)

  1. Declare an array dp and arr
  2. Fill the array arr to 0
  3. Iterate the loop till sqrt(N) and if arr[i] = 0 (marked as prime), then set all of it’s multiples as non-prime by marking the respective location as 1
  4. Update the dp array with the running prime numbers sum, where each location ‘dp[i]’ holds the sum of all the prime numbers withing the range [1, i]

Image Representation

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java Program to computer sum of prime number
// in a given range
public class GFG {
  
    // Suppose the constraint is N<=1000
    static int N = 1000;
  
    // Declare an array for dynamic approach
    static long dp[] = new long[N + 1];
  
    // Method to compute the array
    static void sieve()
    {
        // Declare an extra array as arr
        int arr[] = new int[N + 1];
        arr[0] = 1;
        arr[1] = 1;
  
        // Iterate the loop till sqrt(n)
        // Time Complexity is O(log(n) X sqrt(n))
        for (int i = 2; i <= Math.sqrt(N); i++)
  
            // if ith element of arr is 0 i.e. marked as prime
            if (arr[i] == 0)
  
                // mark all of it's multiples till N as non-prime
                // by setting the locations to 1
                for (int j = i * i; j <= N; j += i)
                    arr[j] = 1;
  
        long runningPrimeSum = 0;
  
        // Update the array 'dp' with the running sum
        // of prime numbers within the range [1, N]
        // Time Complexity is O(n)
        for (int i = 1; i <= N; i++) {
            if (arr[i] == 0)
                runningPrimeSum += i;
  
            //Here, dp[i] is the sum of all the prime numbers
            //within the range [1, i]
            dp[i] = runningPrimeSum;
        }
    }
  
    // Driver code
    public static void main(String[] args)
    {
        int l = 4, r = 13;
  
        // Compute dp
        sieve();
        System.out.println(dp[r] - dp[l - 1]);
    }
}
chevron_right

# Python3 Program to computer sum of prime number
# in a given range
import math # for sqrt and ceil function

# Suppose the constraint is N

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# Program to computer sum of prime number 
// in a given range 
using System;
public class GFG { 
  
  
    // Suppose the constraint is N<=1000 
    static int N = 1000; 
  
    // Declare an array for dynamic approach 
    static long[] dp = new long[N + 1]; 
  
    // Method to compute the array 
    static void sieve() 
    
        // Declare an extra array as arr 
        int []arr = new int[N + 1]; 
        arr[0] = 1; 
        arr[1] = 1; 
  
        // Iterate the loop till sqrt(n) 
        // Time Complexity is O(log(n) X sqrt(n)) 
        for (int i = 2; i <= Math.Sqrt(N); i++) 
  
            // if ith element of arr is 0 i.e. marked as prime 
            if (arr[i] == 0) 
  
                // mark all of it's multiples till N as non-prime 
                // by setting the locations to 1 
                for (int j = i * i; j <= N; j += i) 
                    arr[j] = 1; 
  
        long runningPrimeSum = 0; 
  
        // Update the array 'dp' with the running sum 
        // of prime numbers within the range [1, N] 
        // Time Complexity is O(n) 
        for (int i = 1; i <= N; i++) { 
            if (arr[i] == 0) 
                runningPrimeSum += i; 
  
            //Here, dp[i] is the sum of all the prime numbers 
            //within the range [1, i] 
            dp[i] = runningPrimeSum; 
        
    
  
    // Driver code 
    public static void Main() 
    
        int l = 4, r = 13; 
  
        // Compute dp 
        sieve(); 
        Console.WriteLine(dp[r] - dp[l - 1]); 
    
  
  
/*This code is contributed by 29AjayKumar*/
chevron_right

Output:

36

Time Complexity:
Space Complexity:




सर्वशक्तिशाली इकलौता

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.





Article Tags :