小编use*_*159的帖子

解释互质检查的工作原理

每次我使用Euclid方法检查两个数字是否是共同素数.但是有一个解决方案使用这个代码来检查共同素数,并且这个时间比Euclid方法快得多:( 来源)

private static boolean isCoprime(long u, long v) {
    if (((u | v) & 1) == 0)
        return false;

    while ((u & 1) == 0)
        u >>= 1;
    if (u == 1)
        return true;

    do {
        while ((v & 1) == 0)
            v >>= 1;
        if (v == 1)
            return true;

        if (u > v) {
            long t = v;
            v = u;
            u = t;
        }
        v -= u;
    } while (v != 0);

    return false;
} …
Run Code Online (Sandbox Code Playgroud)

java performance greatest-common-divisor

5
推荐指数
1
解决办法
922
查看次数

通过平方来表示

当我通过平方搜索 Exponentiation时我得到了递归方法,但后来我偶然发现了这个伪代码,我无法完全理解.

function powermod(base, exponent, modulus) {
    if (base < 1 || exponent < 0 || modulus < 1)
        return -1

    result = 1;
    while (exponent > 0) {
       if ((exponent % 2) == 1) {
           result = (result * base) % modulus;
       }
       base = (base * base) % modulus;
       exponent = floor(exponent / 2);
    }
    return result;
} 
Run Code Online (Sandbox Code Playgroud)

如果你能用简单的术语给出一些见解,那将会有很大的帮助

java algorithm math

4
推荐指数
1
解决办法
2464
查看次数