给你一个正整数 n
,请你计算在 [1,n]
范围内能被 3
、5
、7
整除的所有整数之和。
返回一个整数,用于表示给定范围内所有满足约束条件的数字之和。
今天力扣每日一题太简单啦!!!
class Solution {
public int sumOfMultiples(int n) {
int sum=0;
for(int i=1;i<=n;i++){
if(i%3==0||i%5==0||i%7==0)
sum=sum+i;
}
return sum;
}
}
但是还可以优化时间,3的等差数列之和加5的等差数列之和再加7的等差数列之和,再减去3*5的等差数列之和3*7的5*7的
class Solution {
public int sumOfMultiples(int n) {
return dc(n, 3) + dc(n, 5) + dc(n, 7) - dc(n, 3*5) - dc(n, 3 * 7) - dc(n,5*7) + dc(n, 3 * 5 * 7);
}
public int dc(int n, int k){
int sum = n / k;
return (k + sum * k) * sum / 2;
}
}