【问题标题】:Error message while calculating if number is perfect power计算数字是否为完美幂时出现错误消息
【发布时间】:2017-09-04 22:03:50
【问题描述】:

我正在尝试确定数字“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 时,错误消息显示为“returned not null on non-perfect power 14618”)。当随机测试提供的“n”为 62383 时,也会出现相同的结果。

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

【问题讨论】:

  • n=9 失败

标签: javascript math logarithm


【解决方案1】:

以下是我对您的代码所做的一些小改动

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 相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-09
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多