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的倍数。
最简单的方法:
class Untitled {
public static int multiplesSum(int n) {
int i=0;
int sum=0;
for(i=1;i<n;i++) {
if((0==i%3)||(0==i%5)){
sum += i;
}
}
return sum;
}
public static void main(String[] args) {
int sum=0;
System.out.println("hello http://tool.lu/");
sum=multiplesSum(1000);
System.out.println(sum);
}
}
效率高的方法:
利用等差数列求和公式n*a + d*n*(n-1)/2
例如10以下的3的公倍数
3*3+3*3*(3-1)/2=18
先分别计算3和5 的公倍数的和,再减去15的公倍数的和。
class Untitled {
public static int multiplesSum(int n,int k) {
int i=0;
int sum=0;
i=(n-1)/k;
sum=i*k+k*i*(i-1)/2;
return sum;
}
public static void main(String[] args) {
int sum=0;
System.out.println("hello http://tool.lu/");
sum=multiplesSum(1000,3)+multiplesSum(1000,5)-multiplesSum(1000,15);
System.out.println(sum);
}
}