2017-09-04 22 views
1

我想确定如果一个数字“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”)。当随机测试提供“n”62383时,会出现相同的结果。

我不确定为什么代码通过除最后一个之外的每个测试。是不是JS的数字太大?

+0

n = 9时失败 – Isaac

回答

0

下面是我给你的代码

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

相关问题