Java 改进查找满足对称关系的对数的运行时间

Java 改进查找满足对称关系的对数的运行时间,java,performance,Java,Performance,昨天我进行了一次在线编码测试。这个问题不难解决,但我无法达到要求的运行时间。问题如下: 给定1如果你的代码是100%功能性的,但你正在寻找人来改进它,你应该检查一下。我想你的目的是将a和b限制为立方数,而不是计算任何旧整数的立方根。@PaulBoddington如果你这样做了,你不会发现类似a=2,B=54式中等式的结果为128((2^(1/3)+54^(1/3))^3=(1.2599210498948731647672106072782+3.77976314968619430163821834

昨天我进行了一次在线编码测试。这个问题不难解决,但我无法达到要求的运行时间。问题如下:


给定1如果你的代码是100%功能性的,但你正在寻找人来改进它,你应该检查一下。我想你的目的是将a和b限制为立方数,而不是计算任何旧整数的立方根。@PaulBoddington如果你这样做了,你不会发现类似
a=2,B=54
式中等式的结果为
128
(2^(1/3)+54^(1/3))^3=(1.2599210498948731647672106072782+3.77976314968619430163821834347)^3=5.0396841995794926590688424291129^3=128
。@Andreas很好的一点,在评论之前我应该仔细考虑一下。我猜你想限制a和b的形式为sk^3,tk^3(或类似的)。@Andreas实际上我想我的意思是ks^3,kt^3。如果你的代码是100%功能性的,但你正在寻找人来改进它,你应该检查一下。我想你是想限制a和b为立方体数,如果你这样做了,你就不会找到像
A=2,B=54
这样的结果,其中方程的结果是
128
(2^(1/3)+54^(1/3))^3=(1.2599210498948731647672106072782+3.7797631496194301818347)^3=5.0396841995794926590688424291129^3=128
)“安德烈亚斯:说得好,我在评论之前应该仔细考虑一下。我猜你想限制a和b的形式为sk^3,tk^3(或类似的东西)。@Andreas实际上我想我的意思是ks^3,kt^3。
static int cubeNumbers(int M, int N) {
    int count = 0;
    if (N > M) {
        int temp = N;
        N = M;
        M = temp;
    }
    for (int i = 1; i <= N; i ++) {
        for (int j = i + 1; j <= N; j ++) {
            if (isValid(i, j)) {count += 2;}
        }
        if (isValid(i, i)) {count += 1;}
    }
    for (int i = N + 1; i <= M; i ++) {
        for (int j = 1; j <= N; j ++) {
            if (isValid(i, j)) {count += 1;}
        }
    }
    return count;
}

private static boolean isValid(int A, int B) {
    double result = Math.pow(Math.pow(A, 1.0/3) + Math.pow(B, 1.0/3), 3);
    return (result % 1) == 0;
}