Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有一种更快的方法来投影Euler#9?_Javascript_Algorithm - Fatal编程技术网

Javascript 有没有一种更快的方法来投影Euler#9?

Javascript 有没有一种更快的方法来投影Euler#9?,javascript,algorithm,Javascript,Algorithm,我的解决方案(Javascript): for(var a=1;a0)和&console.log(a*b*c); } 问题是可以找到的。这是为了找到a*b*c,其中a+b+c=1000,a,b和c是勾股三元组 我的代码可以找到。我的解决方案只循环一个变量最多333次,而不是使用嵌入for循环的解决方案,或者使用一个for循环和一个while循环的解决方案来计算使用平方根的三重查找 理由如下: 给出了a+b+c=1000,且a、b和c构成勾股三元组。因此a

我的解决方案(Javascript):

for(var a=1;a0)和&console.log(a*b*c);
}
问题是可以找到的。这是为了找到a*b*c,其中a+b+c=1000,a,b和c是勾股三元组

我的代码可以找到。我的解决方案只循环一个变量最多333次,而不是使用嵌入for循环的解决方案,或者使用一个for循环和一个while循环的解决方案来计算使用平方根的三重查找

理由如下:

给出了a+b+c=1000,且a、b和c构成勾股三元组。因此a floor()用于消除b是十进制数(因此c也是十进制数)的情况。b>0检查显然是为了确保b不是负值


有更快的方法吗?

请在此处发布您的详细信息,而不仅仅是作为Euler网站的链接。@Barmar对此表示抱歉。我修正了这个问题。只有少数毕达哥拉斯的三元组是1000以下的整数,而大元组只是小元组的倍数。你可以只测试这些已知的集合。一旦你解决了问题,你应该点击问题线程的链接。这就是人们发布项目Euler问题替代算法的地方。特别是,请看第三条评论(由Pier撰写),它解释了如何在根本不进行任何编程的情况下解决这个问题。
for(var a=1; a<333; a++) {
  var b = Math.floor(1000 * (a-500) / (a-1000));
  var c = 1000-a-b;
  (a*a+b*b===c*c && b>0) && console.log(a*b*c);
}