如果 x 可以表示为另一个数 b^p,我们说 p 是一个数 x 的完美 p 次方。
即如果 x=b^p ,则 p 是 x 的完美 p 次方。
我很少有 x 可以是正整数、负整数甚至分数的用例。前两种情况在 java 中可以很容易地处理,但是当 x 是分数时,如何使用 java 找出数字 x 的完美 p 次方。如果 x 是分数,我们可以简单地使用 Math.sqrt(x) 并得到一个使 b^2 =x 的数字 b,这不是真的吗?那么 2 将是 x 的完美 pth 次方。这个案子还有效吗?
我不一定要寻找代码,而是如果 x 是分数,则确定 java 中 x 的完美 pth 幂的逻辑。如果有人认为此案无效,也请说明您的理由。
下面是我编写的用于处理 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;
}