java 开方
日期: 2013-08-29 分类: 个人收藏 290次阅读
输入一个大数(正的),输出它算数平方根的整数部分。还是java省心
import java.io.*;
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args){
Scanner cin = new Scanner(System.in);
BigInteger n, m;
while(cin.hasNextBigInteger()){
n = cin.nextBigInteger();
String theNumber = n.toString();
m = sqrt(theNumber);
System.out.println(m);
}
}
public static BigInteger sqrt(String theNumber) {
int length = theNumber.length(), i;
BigInteger res = BigInteger.ZERO;
BigInteger twenty = BigInteger.valueOf(20);
BigInteger t, x=BigInteger.ZERO, v, few=BigInteger.ZERO;
BigInteger hg = BigInteger.valueOf(100);
String tmpString = null;
int pos = 2-length%2;
tmpString = theNumber.substring(0, pos);
while (true) {
v = few.multiply(hg).add(BigInteger.valueOf(Integer.parseInt(tmpString)));
if (res.compareTo(BigInteger.ZERO)==0) i=9;
else i = v.divide(res.multiply(twenty)).intValue();
for (; i>=0; i--) {
t = res.multiply(twenty).add(BigInteger.valueOf(i)).multiply(BigInteger.valueOf(i));
if (t.compareTo(v)<=0) {
x = t;
break;
}
}
res = res.multiply(BigInteger.TEN).add(BigInteger.valueOf(i));
few = v.subtract(x);
pos++;
if (pos>length) break;
tmpString = theNumber.substring(pos-1, ++pos);
}
return res;
}
}
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:java中的大数
上一篇: 8大你不得不知的Android调试工具
下一篇: UVA 501 Black Box
精华推荐