[英]Error message while calculating if number is perfect power
我正在尝试确定数字“ 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上返回的值不为空”)。 当随机测试提供62383的“ n”时,会出现相同的结果。
我不确定为什么代码会通过除最后一个测试以外的所有测试。 对于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;
}
如@Isaac之前所述,您的代码也会因为n=9
失败。 您的错误读到这是因为14618并不是完美的力量。 与62383相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.