Problem Explanation
- We can find if a number is divisble by another number with the help of
%
modulo operator.
-
num1 % num2
returns 0
if there’s no remainder while doing num1/num2
.
- Starting from
i = 3
because that’s the first number that’s divisble by 3 or 5, we loop through till the number
provided.
- If the number is divisible either by 3 or 5, we add that to the variable
sum
and finally return it.
Solutions
Solution 1 (Click to Show/Hide)
function multiplesOf3and5(number) {
let sum = 0,
i = 3;
while (i < number) {
if (i % 3 == 0 || i % 5 == 0) sum += i;
i++;
}
return sum;
}
Relevant Links
Solution 2 (Click to Show/Hide)
function multiplesOf3and5(number) {
// sum of multiples of 3
const numMultOf3 = Math.floor((number - 1) / 3, 10);
const sum3 = (numMultOf3 * (numMultOf3 + 1) / 2) * 3;
// sum of multiples of 5
const numMultOf5 = Math.floor((number - 1) / 5, 10);
const sum5 = (numMultOf5 * (numMultOf5 + 1) / 2) * 5;
// sum of multiples of 15 (both 3 and 5)
// we need to subtract these because they are added twice
const numMultOf15 = Math.floor((number - 1) / 15, 10);
const sum15 = (numMultOf15 * (numMultOf15 + 1) / 2) * 15;
return sum3 + sum5 - sum15;
}