java biginteger sqrt,如何找到Java BigInteger的平方根?

Is there a library that will find the square root of a BigInteger? I want it computed offline - only once, and not inside any loop. So even computationally expensive solution is okay.

I don't want to find some algorithm and implement. A readily available solution will be perfect.

解决方案

Just for fun:

public static BigInteger sqrt(BigInteger x) {

BigInteger div = BigInteger.ZERO.setBit(x.bitLength()/2);

BigInteger div2 = div;

// Loop until we hit the same value twice in a row, or wind

// up alternating.

for(;;) {

BigInteger y = div.add(x.divide(div)).shiftRight(1);

if (y.equals(div) || y.equals(div2))

return y;

div2 = div;

div = y;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值