gpt4 book ai didi

java - Java 中的 Euler Challenge 1 - 我做错了什么?

转载 作者:行者123 更新时间:2023-12-01 12:36:15 25 4
gpt4 key购买 nike

http://projecteuler.net/problem=1

嘿。我是一名高中生,想要很好地掌握编程问题,所以我访问了 Project Euler。对于问题 1,我用 Java 编写了一些代码来解决它,但显然出了问题。我可以深入了解什么吗?

说明:我在索引值 332 处停止所有操作,因为 Java 从 0 开始计数,而 333 * 3 是 999,低于 1,000。 Apples 是一个独立的类,具有几乎相同的代码,尽管它计数为 5。最后,我手动将两个答案加在一起,但这是不正确的。我究竟做错了什么?两个最终总和是:

三:164838

五:97515

public class Learning {
public static void main(String[] args){
int three[] = new int[333];
int counter = 0;
three[332] = 0;
int totalthree = 0;
int threeincrementer = 1;
int grandtotal;
boolean run = true;
boolean runagain = true;


for (counter = 1; counter<=332; counter++){
three[counter] = 3 * counter;
if (!(three[332] == 0)){
System.out.println("Finished three.");

while (run == true){
totalthree = totalthree + three[threeincrementer];
threeincrementer++;
if (threeincrementer >= 332){
run = false;
System.out.println("Three final is: " + totalthree);
}
}
}


if (runagain == true){
apples ApplesObject = new apples();
ApplesObject.rerun(0);
runagain = false;
}
}
}
}

最佳答案

有些数字同时是 3 和 5 的乘法,例如 15,因此您不应该单独计算 3 的乘法和 5 的乘法的总和,然后将它们相加,因为您最终会做类似的事情

sum3 = 3,6,9,12,15,...

sum5 = 5,10,15,...

所以第一个 sum3 将包含 15,而 sum5 也将包含它,这意味着您将 15 添加两次。现在,为了平衡您的计算,您需要从 sum3+sum5 总和中减去,这将添加所有 15 的乘法

sum15 = 15,30,45,...

因此,使用您的方法,您的最终公式应类似于 sum3+sum5-sum15

但是这个问题的更简单的解决方案可能看起来像

sum = 0 
for each X in 1...999
if (X is multiplication of 3) OR (X is multiplication of 5)
add X to sum

要检查某个数字 X 是否是数字 Y 的乘积,您可以使用 modulo运算符%(例如reminder = X % Y),用于查找一个数字除以另一个数字的余数。

您可以找到更多Java运算符here

关于java - Java 中的 Euler Challenge 1 - 我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25558792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com