Javascript 计算数字是否为完美幂时出错消息
我想确定一个数字“n”是否是一个完美的幂。我创建了以下代码来解决这个问题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);
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时失败