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 functionint main(){ int L = 1, R = 20; cout << sum(L, R); return 0;} |
Java
// Java program to find sum of numbers// divisible by 6 in a given range.import java.io.*;class GFG {// function to calculate the sum // of all numbers divisible by 6// in range L-R..static 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 public static void main(String[] args){ int L = 1, R = 20; System.out.println(sum(L, R));}}// This code is contributed by Prerna Saini |
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 codeL = 1R = 20print(sumDivisible(L,R))# This code is contributed by 'Abhishek Sharma 44'. |
C#
// C# program to find sum of numbers// divisible by 6 in a given range.using System;class GFG { // function to calculate the sum // of all numbers divisible by 6 // in range L-R.. static 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 public static void Main() { int L = 1, R = 20; Console.WriteLine(sum(L, R)); }}// This code is contributed by Anant Agarwal. |
PHP
<?php// PHP program to find sum of numbers// divisible by 6 in a given range.// function to calculate the sum of// all numbers divisible by 6 in range L-R..function sum($L, $R){ // no of multiples of 6 upto r $p = intval($R / 6); // no of multiples of 6 upto l-1 $q = intval(($L - 1) / 6); // summation of all multiples // of 6 upto r $sumR = intval(3 * ($p * ($p + 1))); // summation of all multiples // of 6 upto l-1 $sumL = intval(($q * ($q + 1)) * 3); // returns the answer return $sumR - $sumL;}// Driver Code$L = 1;$R = 20;echo sum($L, $R);// This code is contributed by Sam007?> |
Javascript
// Javascript program to find sum of numbers divisible// by 6 in a given range.<script> // function to calculate the sum of // all numbers divisible by 6 in range L-R.. function sum(L, R) { // no of multiples of 6 upto r let p = Math.floor(R / 6); // no of multiples of 6 upto l-1 let q = Math.floor((L - 1) / 6); // summation of all multiples of 6 upto r let sumR = Math.floor(3 * (p * (p + 1))); // summation of all multiples of 6 upto l-1 let sumL = Math.floor((q * (q + 1)) * 3); // returns the answer return sumR - sumL; } // Driver Code let L = 1, R = 20; document.write(sum(L, R)); // This code is contributed by ajaykrsharma132.</script> |
Output:
36
Time Complexity: O(1), as we are not using any loop or recursion to traverse.
Auxiliary Space: O(1), as we are not using any extra space.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Find More to that Topic: geeksforgeeks.org/sum-of-all-numbers-divisible-by-6-in-a-given-range/ […]
… [Trackback]
[…] Read More to that Topic: geeksforgeeks.org/sum-of-all-numbers-divisible-by-6-in-a-given-range/ […]
… [Trackback]
[…] There you will find 17915 more Info on that Topic: geeksforgeeks.org/sum-of-all-numbers-divisible-by-6-in-a-given-range/ […]