繁体   English   中英

计算数字是否为完美幂时出现错误消息

[英]Error message while calculating if number is perfect power

我正在尝试确定数字“ 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时,错误消息显示为“在非理想电源14618上返回的值不为空”)。 当随机测试提供62383的“ n”时,会出现相同的结果。

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

这是我对您的代码进行的一些小更改

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;
}

如@Isaac之前所述,您的代码也会因为n=9失败。 您的错误读到这是因为14618并不是完美的力量。 与62383相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM