问题1:3和5的倍数
Published on Friday, 5th October 2001, 06:00 pm;
2001年10月5日 星期五 下午6:00发布
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.
如果我们列出3或5倍数小于10的自然数,我们得到3,5,6和9。这些数字的总和是23。
找出小于1000的自然数3或5的倍数。
方法一:最简单的方法为循环1到1000并判断是否能整除3或5
1 uint Sum=0; 2 for(uint curNum=1;curNum<1000;curNum++)if(curNum%3==0 || curNum%5==0) 3 Sum+=curNum;
执行次数:999次;
方法二:如果每次分别进行相加,再去减掉公倍数
1 private uint CountNumSum(uint belowNum,uint uIntNum) 2 { 3 uint curSum = 0; 4 for (uint curNum = uIntNum; curNum < belowNum; curNum += uIntNum) 5 { 6 curSum += curNum; 7 } 8 } 9 uint Sum=0; 10 Sum=CountNumSum(1000,3)+CountNumSum(1000,5)-CountNumSum(15);
执行次数:333+199+66=598次
方法三:这个题目其实还有个最简便的方法,无需循环
1 private uint CountNumSum(uint belowNum,uint uIntNum) 2 { 3 return --belowNum / uIntNum * uIntNum * (1 + belowNum / uIntNum) /2; 4 } 5 uint Sum=0; 6 Sum=CountNumSum(1000,3)+CountNumSum(1000,5)-CountNumSum(15);
毫无疑问,方法三的执行速度是最快的,不存在循环。