手动开根还没学会。。。主要是代码太迷了得研究下
要学手动开根的话可以参考一下链接:
https://www.cnblogs.com/KasenBob/p/10041399.html
我是用了牛顿迭代法,可以参考以下内容:
http://www.matrix67.com/blog/archives/361
以下为代码(本代码由叶晋军同学提供):
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { //定义输入类 sc Scanner sc = new Scanner(System.in); //输入T int T = sc.nextInt(); //long类型表示整数数据范围有限,描述更大的整数时,借助java.math.BigInteger BigInteger n, x; String s; //定义"two"为BigInteger类,值为2 BigInteger two = new BigInteger("2"); while(T-- > 0){ n = sc.nextBigInteger(); //toString()方法返回该对象的字符串表示,保存在s中 s = n.toString(); //x为BigInteger类,值为 截取字符串开头到s.length()/2 + 1位置的子串 并转化成BigInteger类 x = new BigInteger(s.substring(0, s.length()/2 + 1)); //当x * x > n时, //x = (x + (n/x)) / 2 while(x.multiply(x).compareTo(n) > 0) x = x.add(n.divide(x)).divide(two); // if (x % 2 == 0)判断奇偶数,输出结果 if(x.mod(two).compareTo(BigInteger.ZERO) == 0) System.out.println("0"); else System.out.println("1"); } } }