计算数字是否完美时计算出错误信息

时间:2017-09-04 22:03:50

标签: javascript math logarithm

我试图确定一个数字" n"是一个完美的力量。我已经创建了以下代码来解决这个问题。

var isPP = function(n) {
  console.log(n);
  for (let base = 2; base < n; base++) {

    //Change of base formula used to change natural log to log base "base"
      let exp = Math.log(n) / Math.log(base);

   //If "exp" variable is integer, return array containing base and exponent 
     if (Math.pow(base,exp) === n) {
       return [base,exp];
     }
   }

  return null;
}

除了一个随机测试之外,它通过了每个测试(例如:当n = 14618时,错误消息读取&#34;在非完美电源14618&#34上返回非空;)。当随机测试提供&#34; n&#34;时,会出现相同的结果。 62383。

我不确定代码为什么会通过除最后一个测试之外的所有测试。可能是数字对于JS来说太大了吗?

1 个答案:

答案 0 :(得分:0)

以下是我对您的代码进行的一些小改动

dial tcp: lookup kafka2 on 127.0.0.11:53: dial udp 127.0.0.11:53: i/o timeout orderer0.example.com

正如@Isaac之前所述,var isPP = function(n){ for (let base = 2; base <= n/2; base++) { //start at 2 for (let exp = 2; exp <= n/2; exp++) { let current = Math.pow(base,exp); if (current == n) return [base, exp]; if (current > n) break; //break when found to create a 'best case' runtime } } return null; } 的代码也失败了。你的错误是读取这个,因为14618不是一个完美的力量。与62383相同。