Skip to content

Instantly share code, notes, and snippets.

@gubatron
Created October 24, 2013 15:16
Show Gist options
  • Select an option

  • Save gubatron/7139070 to your computer and use it in GitHub Desktop.

Select an option

Save gubatron/7139070 to your computer and use it in GitHub Desktop.
/** Java's BigInteger doesn't have a squared root function, sigh */
public static BigInteger sqrt(BigInteger n) {
BigInteger a = BigInteger.ONE;
BigInteger b = new BigInteger(n.shiftRight(5).add(new BigInteger("8")).toString());
while(b.compareTo(a) >= 0) {
BigInteger mid = new BigInteger(a.add(b).shiftRight(1).toString());
if(mid.multiply(mid).compareTo(n) > 0) b = mid.subtract(BigInteger.ONE);
else a = mid.add(BigInteger.ONE);
}
return a.subtract(BigInteger.ONE);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment