# 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


## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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:

 // C++ Program to computer sum of prime number  // in a given range  #include  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);  }

 // 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));      }  }

 # 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

 // 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

 = $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  ?>

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

 // 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 = 1;          arr = 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]);      }  }

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

# Suppose the constraint is N

 // 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 = 1;           arr = 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*/

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.