我试图确定一个数字" 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时,错误消息读取&#34;在非完美电源14618&#34上返回非空;)。当随机测试提供&#34; n&#34;时,会出现相同的结果。 62383。
我不确定代码为什么会通过除最后一个测试之外的所有测试。可能是数字对于JS来说太大了吗?
答案 0 :(得分:0)
以下是我对您的代码进行的一些小改动
dial tcp: lookup kafka2 on 127.0.0.11:53: dial udp 127.0.0.11:53: i/o timeout orderer0.example.com
正如@Isaac之前所述,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;
}
的代码也失败了。你的错误是读取这个,因为14618不是一个完美的力量。与62383相同。