1

Javaでは、数値が立方体かどうかをどのように確認しますか?

数値は範囲の間であることができます−2,147,483,648..2,147,483,647

たとえば、次の数値が与えられた場合、それらが立方体であることがわかります

8 (2^3) - True
27 (3^3) - True
64 (4^3) - True
4

5 に答える 5

5

(-1291)^3 と 1291^3 は両方ともintJava の an の範囲外です。とにかく、そのような数は2581あります。正直なところ、ルックアップ テーブルが最も簡単で最速かもしれません。

于 2013-10-02T22:39:18.737 に答える
2

いくつか試してくださいMath( java.lang.Math):

boolean isCube(double input) {
    double cubeRoot = Math.cbrt(input); // get the cube root
    return Math.round(cubeRoot) == cubeRoot; // determine if number is integral
    // Sorry for the stupid integrity determination. I tried to answer fast 
    // and really couldn't remember the better way to do that :)
}
于 2013-10-02T22:42:46.373 に答える
2

立方根を取得し、結果を丸め、その立方体を取得してみてください。

int a = (int) Math.round(Math.pow(number_to_test, 1.0/3.0));
return (number_to_test == a * a * a);    
于 2013-10-02T22:50:32.837 に答える
1

さて、次のことができます(疑似コード)

double x = number;
int b = floor (x ^ (1.0/3.0))  // ^ is exponentiation
if (b*b*b == number || (b+1)*(b+1)*(b+1) == number)
    // it is a cube
于 2013-10-02T22:40:27.550 に答える
-2

ループを追加します。

int inputNum = //whatever ;
int counter = 1;
boolean po3 = false;
while(counter<inputNum || po3==true){
 if((counter*counter*counter)==inputNum){
  po3 = true;
 } else {
  counter++;
 }
}
于 2013-10-02T22:39:34.703 に答える