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

Javascript 计算数字是否为完美幂时出错消息,javascript,math,logarithm,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);

我想确定一个数字“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;
}
var isPP=函数(n){
控制台日志(n);
for(让base=2;base
这通过了除一个随机测试外的所有测试(例如:当n=14618时,错误消息显示“在非完美电源14618上返回NOTNULL”)。当随机测试的“n”为62383时,也会出现相同的结果


我不知道为什么代码通过了除最后一个测试之外的所有测试。可能是这些数字对于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;
}
var isPP=函数(n){

对于(让base=2;base,这里是我对您的代码所做的一些小更改

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;
}
var isPP=函数(n){

对于(让base=2;base这在n=9时失败这在n=9时失败