最近被腾讯打击到了,下决心开始写技术博客。
第一件事开始做朋友推荐的Project Euler,网址http://projecteuler.net。练练代码,也练练思想,本周做了8题,均用java实现,希望有看到的人帮忙提提意见
Problem 1
求1000以下所有3或者5倍数的数之和
/**
* 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.
*/
代码:
private static int sumMultiples(int N, int n1) {
int len = (N - 1) / n1;
if (len < 1)
return 0;
return (1 + len) * len / 2 * n1;
}
public static void main(String[] args) {
int sum = sumMultiples(1000, 5);
sum += sumMultiples(1000, 3);
sum -= sumMultiples(1000, 15);
print(sum);
}
思想:入门题,很简单,3或者5的倍数是个等差数列,用等差数列求;然后注意15的倍数既是3也是5的倍数,应当减去。