Мы говорим, что p - это совершенная p-я степень числа x, если x можно выразить как другое число b ^ p.
Т.е. если x = b ^ p, то p является идеальной p-й степенью x.
У меня мало случаев использования, где x может быть либо положительным целым числом, отрицательным целым числом или даже дробью. Первые два случая могут быть легко обработаны в java, но как найти идеальную p-ую степень числа x, используя java, когда x - это дробь. Не правда ли, что если x является дробью, мы можем просто использовать Math.sqrt (x) и получить число b такое, что b ^ 2 = x? Тогда 2 будет идеальной p-й степенью х. Этот случай даже действителен?
Я не обязательно ищу код, но логику, чтобы определить идеальную p-ую степень x в java, если x - это дробь. Также, пожалуйста, укажите причину, если кто-то считает это дело недействительным.
Ниже приведен код, который я написал для обработки случаев, когда 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;
}