Sum of all numbers divisible by 6 in a given range

2

Given a range L-R, find the sum of all numbers divisible by 6 in range L-R

L and R are very large.

Examples:

Input : 1 20
Output : 36 
Explanation: 6 + 12 + 18 = 36 

Input : 5 7  
Output : 6
Explanation: 6 is the only divisible number 
in range 5-7 

A naive approach is be to run a loop from L to R and sum up all the numbers divisible by 6.

An efficient approach is to sum all the numbers divisible by 6 up to R in sum, and sum all numbers divisible by 6 up to L-1. And then there subtraction will be the answer.

sum = 6 + 12 + 8 + …….(R/6)terms.
sum = 6(1 + 2 + 3……R/6 terms)

sumR = 3 * (R/6) * (R/6+1)

similarly we get

sumL as 3 * ((L-1)/6) * ((L-1/6)+1)

and the final answer as sumR – sumL.

C++

// CPP program to find sum of numbers divisible
// by 6 in a given range.
#include <bits/stdc++.h>
using namespace std;

// function to calculate the sum of
// all numbers divisible by 6 in range L-R..
int sum(int L, int R)
{
    // no of multiples of 6 upto r
    int p = R / 6;

    // no of multiples of 6 upto l-1
    int q = (L - 1) / 6;

    // summation of all multiples of 6 upto r
    int sumR = 3 * (p * (p + 1));

    // summation of all multiples of 6 upto l-1
    int sumL = (q * (q + 1)) * 3;

    // returns the answer
    return sumR - sumL;
}

// driver program to test the above function
int main()
{
    int L = 1, R = 20;
    cout << sum(L, R);
    return 0;
}

Python

# Python3 program to find sum of numbers divisible
# by 6 in a given range.

def sumDivisible(L, R):
  
    # no of multiples of 6 upto r
    p = int(R/6)

    # no of multiples of 6 upto l-1
    q = int((L-1)/6)

    # summation of all multiples of 6 upto r
    sumR = 3 * (p * (p + 1))

    # summation of all multiples of 6 upto l-1
    sumL = (q * (q + 1)) * 3

    # returns the answer
    return sumR - sumL

# driver code
L = 1
R = 20
print(sumDivisible(L,R))

# This code is contributed by 'Abhishek Sharma 44'.


Output:

36

Time Complexity: O(1)

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

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.

Recommended Posts:



2 Average Difficulty : 2/5.0
Based on 1 vote(s)










Writing code in comment? Please use ide.geeksforgeeks.org, generate link and share the link here.