Sum of the numbers upto N that are divisible by 2 or 5

Given a number n. The task is to find the sum of numbers up to n, that are divisible 2 or 5.

Examples:

Input: n = 2
Output: 2

Input: n = 5
Output: 11

A naive approach is to just iterate over the numbers upto n and check if it divisible by 2 or 5. If it is divisible then just add this number to our required sum. And finally we got our total sum with complexity of O(n).

Efficient Approach:

  1. First find the numbers that are divisible by 2. So, these number for an AP, having

    first term = 2, difference = 2, Number of terms = n/2
    So, sum given by-

         \begin{align*} Sum=\frac{n*\left(2*a+(n-1)*d\right)}{2}\\ \end{align*} put the value, we got \begin{align*} Sum_2=\frac{\frac{n}{2}*\left(4+\left(\frac{n}{2}-1\right)*2\right)}{2}\\ \end{align*}

  2. Secondly we find the numbers that are divisible by 5. So, these number for an AP, having

    first term = 5, difference = 5, Number of terms = n/5
    So, sum given by-

         \begin{align*} Sum=\frac{n*\left(2*a+(n-1)*d\right)}{2}\\ \end{align*} put the value, we got \begin{align*} Sum_5=\frac{\frac{n}{5}*\left(10+\left(\frac{n}{5}-1\right)*5\right)}{2}\\ \end{align*}

  3. First we find the numbers that are divisible by 2 and 5.so, these number for an AP, having

    first term =10, difference = 10, Number of terms = n / 10
    So, sum given by-

         \begin{align*} Sum=\frac{n*\left(2*a+(n-1)*d\right)}{2}\\ \end{align*} put the value, we got \begin{align*} Sum_{10}=\frac{\frac{n}{10}*\left(20+\left(\frac{n}{10}-1\right)*10\right)}{2}\\ \end{align*}

  4. As we have to find sum of number divisible by 2 or 5. So, required sum is given by-

    sum = sum_2 + sum_5 – sum_10


Below is the implementation of above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of above approach
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
  
// Function to find the sum
ll findSum(int n)
{
  
    ll sum2, sum5, sum10;
  
    // sum2 is sum of numbers divisible by 2
    sum2 = ((n / 2) * (4 + (n / 2 - 1) * 2)) / 2;
  
    // sum5 is sum of number divisible by 5
    sum5 = ((n / 5) * (10 + (n / 5 - 1) * 5)) / 2;
  
    // sum10 of numbers divisible by 2 and 5
    sum10 = ((n / 10) * (20 + (n / 10 - 1) * 10)) / 2;
  
    return sum2 + sum5 - sum10;
}
  
// Driver code
int main()
{
    int n = 5;
  
    cout << findSum(n) << endl;
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of 
// above approach
import java.lang.*; 
import java.util.*; 
  
class GFG 
  
// Function to find the sum 
static long findSum(int n) 
    long sum2, sum5, sum10; 
      
    // sum2 is sum of numbers 
    // divisible by 2 
    sum2 = ((n / 2) * (4
            (n / 2 - 1) * 2)) / 2
      
    // sum5 is sum of number 
    // divisible by 5 
    sum5 = ((n / 5) * (10
            (n / 5 - 1) * 5)) / 2
      
    // sum10 of numbers divisible 
    // by 2 and 5 
    sum10 = ((n / 10) * (20
             (n / 10 - 1) * 10)) / 2
      
    return sum2 + sum5 - sum10; 
  
// Driver code 
public static void main (String[] args) 
{
    int n = 5
    System.out.println(findSum(n)); 
}
  
// This code is contributed by Raj

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of 
# above approach 
  
# Function to find the sum 
def findSum(n): 
  
      
    # sum2 is sum of numbers divisible by 2 
    sum2 = ((n // 2) * (4 + (n // 2 - 1) * 2)) // 2 
  
    # sum5 is sum of number divisible by 5 
    sum5 = ((n // 5) * (10 + (n // 5 - 1) * 5)) // 2 
  
    # sum10 of numbers divisible by 2 and 5 
    sum10 = ((n // 10) * (20 + (n // 10 - 1) * 10)) // 2 
  
    return sum2 + sum5 - sum10; 
  
  
# Driver code
if __name__=='__main__':
    n = 5 
    print (int(findSum(n))) 
      
  
# this code is contributed by Shivi_Aggarwal

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of 
// above approach
using System;
  
class GFG 
  
// Function to find the sum 
static long findSum(int n) 
    long sum2, sum5, sum10; 
      
    // sum2 is sum of numbers 
    // divisible by 2 
    sum2 = ((n / 2) * (4 + 
            (n / 2 - 1) * 2)) / 2; 
      
    // sum5 is sum of number 
    // divisible by 5 
    sum5 = ((n / 5) * (10 + 
            (n / 5 - 1) * 5)) / 2; 
      
    // sum10 of numbers divisible 
    // by 2 and 5 
    sum10 = ((n / 10) * (20 + 
             (n / 10 - 1) * 10)) / 2; 
      
    return sum2 + sum5 - sum10; 
  
// Driver code 
public static void Main () 
{
    int n = 5; 
    Console.WriteLine(findSum(n)); 
}
  
// This code is contributed by inder_verma

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of above approach
  
// Function to find the sum 
function findSum($n
  
    // sum2 is sum of numbers 
    // divisible by 2 
    $sum2 = ((int)($n / 2) * (4 + 
            ((int)($n / 2) - 1) * 2)) / 2; 
      
    // sum5 is sum of number 
    // divisible by 5 
    $sum5 = ((int)($n / 5) * (10 + 
                  ($n / 5 - 1) * 5)) / 2; 
      
    // sum10 of numbers divisible 
    // by 2 and 5 
    $sum10 = ((int)($n / 10) * (20 + 
                   ($n / 10 - 1) * 10)) / 2; 
      
    return $sum2 + $sum5 - $sum10
  
// Driver Code 
$n = 5; 
echo findSum($n); 
  
// This code is contributed by Raj 
?>

chevron_right


Output:

11


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

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.