如果我们列出了3或5的倍数低于10的所有自然数,则获得3、5、6和9。这些倍数的总和为23。
找到1000以下3或5的所有倍数的总和。
项目Euler找到了解决方案,我得到了array out of bounds error
import java.awt.List;
import java.util.Vector;
import java.util.ArrayList;
import java.util.stream.*;
//print the sum of the multiples of 3 and 5 below 1000
public class multiples_of_3_and_5 {
public static void main(String[] args) {
int mult3[] = new int[200];
int mult5[] = new int[200];
for (int i = 1; i <= 1000; i+=3 -1) {
for (int x = 0; x <= mult3.length; x++) {
mult3[x] = i;
}
}
for (int i = 1; i <= 1000; i+=5 -1 ) {
for(int x = 0; x <= mult5.length; x++) {
mult5[x] = i;
}
}
int threeTotal = IntStream.of(mult3).sum();
int fiveTotal = IntStream.of(mult5).sum();
System.out.println(threeTotal);
System.out.println(fiveTotal);
}
}
您可以无需任何循环解决这个问题。只需计算相关算术进程的总和即可。
算术进程的总和为n(a
1至999之间3
的倍数的总和是(3+999)*333/2
1至999之间5
的倍数的总和是(5+995)*199/2
这两个总和都包括15
的倍数,因此您必须在1到999之间减去15
的倍数的总和,即(15+990)*66/2
因此,所需的总和为
(3+999)*333/2 + (5+995)*199/2 - (15+990)*66/2