有人可以向我解释这个函数,该函数在Java中找到BigInteger的平方根吗?

彼得豪森:

因此,我需要在Java 9之前的版本中对BigInteger进行sqrt,然后发现下面的函数可以做到这一点。我确实了解该代码,但是我真的不明白为什么要在那里。因此,我想我并没有真正了解其背后的数学原理。就像为什么要使用(n / 32 + 8)。为什么要按中间方式计算中间值。等等

    BigInteger a = BigInteger.ONE;
    BigInteger b = n.shiftRight(5).add(BigInteger.valueOf(8));
    while (b.compareTo(a) >= 0) {
        BigInteger mid = a.add(b).shiftRight(1);
        if (mid.multiply(mid).compareTo(n) > 0) {
            b = mid.subtract(BigInteger.ONE);
        } else {
            a = mid.add(BigInteger.ONE);
        }
    }
    return a.subtract(BigInteger.ONE);
}
总统詹姆士·波尔克:

该算法是二等分方法,用于求多项式x 2 - n = 0的零为什么将(n / 32 + 8)用作种子?我不知道这是一个很差的近似值。更好的近似值几乎是便宜的计算是n.shiftRight(n.bitLength()/2);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有人可以向我解释这个JS函数吗?

有人可以使用.bind()函数向我解释此代码吗?

有人可以向我解释此JavaScript函数的流程吗?(关闭概念)

有人可以向我解释函数中的一行代码吗

有人可以向我解释这个方法签名吗

Speech_recognition.UnknownValueError - 有人可以向我解释这个错误吗

有人可以向我解释这个“差异”是什么意思吗?

有人可以向我解释这个Perl脚本吗?

有人可以向我解释这个按键变量吗

有人可以向我解释为什么给出这个输出吗?

有人可以向我解释这个非常基本的Python代码吗?

有人可以向我解释这个AWK命令吗?

有人可以向我解释这个leetcode字符串操作问题吗?

有人可以向我解释这个 python 管道语法吗

有人可以向我解释这个javascript语句吗?

有人可以向我解释这个布尔代数方程吗

有人可以在perl中向我解释这个正则表达式吗?

有人可以向我解释这个 JavaScript 开关代码吗?

有人可以向我解释这个“while”循环吗?(重复和变量)

有人可以向我解释这个 if 语句中返回的内容吗

有人可以向我解释为什么我的函数返回0而不是1吗?

有人可以向我解释为什么函数内的参数立即被赋值给对象的值吗?

有人可以解释指向我的指针吗

有人可以向我解释话题吗?

有人可以向我解释这种行为吗?

有人可以向我解释这种行为吗?

有人可以向我解释这种行为吗?

有人可以向我解释什么是stty吗?

有人可以向我解释逻辑问题吗