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.
// 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;
} |
// 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 |
# 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'. |
// 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 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 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.