gpt4 book ai didi

javascript - 项目 Euler 解决方案 9 代码不工作

转载 作者:行者123 更新时间:2023-11-28 19:15:04 28 4
gpt4 key购买 nike

function getAnswer(){
var answer, c = 334;
while (c < 999){
var a = Math.round(((1000 - c) / 2) - 0.5), b = Math.round((1000 - c) / 2);
while (a > 0 && b < c){
if (Math.pow(a, 2) + Math.pow(b, 2) != Math.pow(c, 2)){
a -= 1;
b += 1;
}else{
answer = a * b * c;
}
}
c += 1;
}
document.getElementById("a").innerHTML = answer;
}

嗨!我是一名 javascript 初学者,我一直在尝试解决 Project Euler 中的问题 9。这个问题是这样的:

A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,

a^2 + b^2 = c^2For example, 3^2 + 4^2 = 9 + 16 = 25 = 5^2.

There exists exactly one Pythagorean triplet for which a + b + c = 1000.Find the product abc.

我不知道为什么每次运行此脚本时都没有出现答案,并且我的脚本崩溃/程序停止运行。请解释并告诉我我的脚本有什么问题。

最佳答案

找到答案后,您不会停止迭代。更糟糕的是,您不再更改 ab 的值,因此它们永远不会到达迭代的末尾,并且您会陷入无限循环.

找到答案后,您需要跳出循环。或者甚至使用标签打破两个嵌套循环:

function getAnswer() {
var answer,
c = 334;
find: while (c < 999) {
var a = Math.round(((1000 - c) / 2) - 0.5),
b = Math.round((1000 - c) / 2);
while (a > 0 && b < c) {
if (Math.pow(a, 2) + Math.pow(b, 2) == Math.pow(c, 2)) {
answer = a * b * c;
break find;
}
a -= 1;
b += 1;
}
c += 1;
}
document.getElementById("a").innerHTML = answer;
}

请注意,如果您的函数只是返回答案,而不是用它填充#a,那么会更容易。你会这样调用它

document.getElementById("a").innerHTML = getAnswer();

并且只需返回 a * b * c; 即可突破整个函数。

关于javascript - 项目 Euler 解决方案 9 代码不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30041170/

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