2017-09-04 21 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相同。

相關問題