2652. 倍数求和
难度:简单
给你一个正整数 n ,请你计算在 [1, n] 范围内能被 3、5、7 整除的所有整数之和。
返回一个整数,用于表示给定范围内所有满足约束条件的数字之和。
示例 1:
:n = 7
:21
:在
[1, 7]范围内能被3、5、7整除的所有整数分别是3、5、6、7。数字之和为21。
示例 2:
:n = 10
:40
:在
[1, 10]范围内能被3、5、7整除的所有整数分别是3、5、6、7、9、10。数字之和为40。
示例 3:
:n = 9
:30
:在
[1, 9]范围内能被3、5、7整除的所有整数分别是3、5、6、7、9。数字之和为30。
提示:
1 <= n <= 10^3
题解:
方法一:枚举
js
/**
* @param {number} n
* @return {number}
*/
var sumOfMultiples = function (n) {
let sum = 0;
for (let i = 1; i <= n; i++) {
if (i % 3 == 0 || i % 5 == 0 || i % 7 == 0) {
sum += i;
}
}
return sum;
};方法二:容斥原理
js
var f = function (n, m) {
return ((m + Math.floor(n / m) * m) * Math.floor(n / m)) / 2;
};
var sumOfMultiples = function (n) {
return (
f(n, 3) +
f(n, 5) +
f(n, 7) -
f(n, 3 * 5) -
f(n, 3 * 7) -
f(n, 5 * 7) +
f(n, 3 * 5 * 7)
);
};
My Blog Docs