如果我们列出10以下的所有自然数是3或5的倍数,我们得到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);
}
}
答案 0 :(得分:0)
您可以在没有任何循环的情况下解决此问题只需计算相关arithmetic progressions的总和。
算术级数之和为n(a 1 + a n )/ 2,其中 1 是第一个元素, a n 是最后一个元素,n是元素的数量。
1到999之间3
的倍数之和为(3+999)*333/2
1到999之间5
的倍数之和为(5+995)*199/2
这两个总和都包含15
的倍数,因此您必须减去15
在1到999之间的倍数之和,即(15+990)*66/2
因此总需求总和为
(3+999)*333/2 + (5+995)*199/2 - (15+990)*66/2