ProjectEuler 1

最近被腾讯打击到了,下决心开始写技术博客。

第一件事开始做朋友推荐的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的倍数,应当减去。

原文地址:https://www.cnblogs.com/lake19901126/p/3047156.html