If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
如果我们列出所有低于10的自然数是3或5的倍数,我们得到3,5,6和9,这些倍数的总和为23。
找到1000以下所有3或5的倍数的总和。
1.暴力求解法
从1遍历到1000,将能被3和5整除的数相加到sum中,注意存在既能整除3又能整除5的数,所以用或运算
#include <stdio.h>
int main(){
int sum = 0;
for(int i = 1; i < 1000; i++){
if((i % 3 == 0) || (i % 5 == 0)){
sum += i;
}
}
printf("%d\n", sum);
return 0;
}
2.技巧求解法
由于我们初中的时候求过等差数列的求和运算,所以在这里,我们并不需要花费那么多时间去遍历,于是我们巧用公式等差数列的求和公式= (首相 + 末项) * 项数 / 2;
注意:在这里能被3和5同时整除的数加了两次,所以我们需要把重复加的数字通过公式减下去
#include <stdio.h>
int main()
{
intsum3, sum5, sum15;
sum3 = (3 + 999) * (999 / 3) / 2;
sum5 = (5 + 995) * (995 / 5) / 2;
sum15 = (15 + 990) * (990 / 15) / 2;
printf("%d\n", sum3 + sum5 - sum15);
return0;
}