如果 x 可以表示为另一个数 b^p,我们就说 p 是一个数 x 的完美 p 次幂。
即如果 x=b^p ,则 p 是 x 的完美 p 次方。
我很少有 x 可以是正整数、负整数甚至分数的用例。前两种情况在 java 中很容易处理,但是当 x 是分数时,如何使用 java 找出数字 x 的完美 p 次方。如果 x 是一个分数,我们可以简单地使用 Math.sqrt(x) 并得到一个数字 b 使得 b^2 =x 是不是真的?那么 2 将是 x 的完美 p 次方。这个案例是否有效?
我不一定在寻找代码,而是在 x 是分数时确定 java 中 x 的完美 p 次幂的逻辑。如果有人认为此案例无效,也请说明您的理由。
下面是我编写的代码,用于处理 x 是正整数或 0 到 1 之间的数字的情况。但是我们可以处理 x 是的情况,例如。45.487,875515.54884,等等?
public class PerfectPower {
public PerfectPower() {
}
public Integer getPerfectPower(double x){
// x=b^p
int p = 0;
double b;
if(x==0){
throw new IllegalArgumentException("Cannot accept number 0.");
}
if (x > 1) {
for (b = 2; b <= x; b++) {
double value = 0;
p = 1;
while (value <= x) {
value = Math.pow(b, p);
if (value == x) {
return p;
} else if (value > x) {
break;
} else {
p++;
}
}
}
} else if(x>0 && x<1){
for (b = 2; (1/b) >= x; b++) {
double value = 1;
p = -1;
while (value >= x) {
value = Math.pow(b, p);
if (value == x) {
return p;
} else if (value < x) {
break;
} else {
p--;
}
}
}
}
return null;
}
holdtom
哔哔one
相关分类