这个数字是2个立方体的总和吗?

时间:2017-06-27 03:04:07

标签: javascript

我对我的剧本感到有点麻烦,我希望有人可以帮忙,我有一种感觉,我错过了一些简单的东西,但另一双眼睛会很棒。

代码如下:



sumOfTwoCubes(91);

function sumOfTwoCubes($number) {
  var cube;
  var limit;
  var i, j, k;
  cube = $number;
  limit = Math.ceil(Math.exp(Math.log(cube) / 3));
  for (i = 1; i <= limit; i++) {
    for (j = 1; j <= limit; j++) {
      k = i * i * i + j * j * j;
      if (k == cube) {
        var out = "True";
      } else {
        var out = "False";
      }
    }
  }

  document.getElementById("result").innerHTML = out;
}
&#13;
<p id="result"></p>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

你可以这样做。

function sumOfTwoCubes($number)
{
  var cube;
  var limit;
  var i, j, k;
  cube = $number;
  limit = Math.ceil(Math.exp(Math.log(cube)/3));
  for(i = 1; i <= limit; i++){
    for(j = 1; j <= limit; j++){
      k = i * i * i + j * j * j;
      if(k == cube){
        return document.getElementById("result").innerHTML = "TRUE";
      }
    }
  }
  return document.getElementById("result").innerHTML = "False";
}

sumOfTwoCubes(91);
<p id="result"></p>

答案 1 :(得分:0)

您需要做的就是在找到正确答案时结束循环!

sumOfTwoCubes(91);
function sumOfTwoCubes($number)
{
  var cube;
  var limit;
  var i, j, k;
  var out = "False";
  cube = $number;
  limit = Math.ceil(Math.exp(Math.log(cube)/3));
    for(i = 1; i <= limit; i++){
      for(j = 1; j <= limit; j++){
        k = i * i * i + j * j * j;
        if(k == cube){
          var out = "True";
          break;
        }
      }
      if (out == "True")
        break;
    }

  document.getElementById("result").innerHTML = out;
}

现在它显示"True"! 我所做的就是:
- 在k == cube时添加了休息时间,因此它将离开内部for - 添加了if (out == "True") break;,因此如果out"True",它将结束您的循环,您会在"True"元素内看到result消息!