<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="skins/JinnStyleV1/article.xslt"?><blog view="690635" processed="0.084" queries="8" focusMarkup="" xslt="skins/JinnStyleV1/article.xslt"><panels><panel id="1" sn="0" sys="true"><name>Blog Main</name><content><article id="168" disComm="false"><title>[JAVA]大数开平方(模拟手算的方法)</title><category id="20"><name>学习随笔</name><icon>images/icons/3.gif</icon></category><content><![CDATA[&#22312; CSDN &#30475;&#21040;&#30340;&#38382;&#39064;&#12290;&#12288;&#35201;&#27714;&#31639;&#20986;&#24320;&#24179;&#26041;&#32467;&#26524;&#30340;&#31934;&#30830;&#25972;&#25968;&#37096;&#20998;<br />&#24819;&#20102;&#24819;&#65292;&#24819;&#19981;&#21040;&#21035;&#30340;&#22909;&#30340;&#26041;&#27861;&#12288;&#23601;&#29992;&#20102;&#25720;&#25311;&#25163;&#31639;&#30340;&#26041;&#27861;<br /><textarea name='code' class='js' cols='50'>
public static void main(String[] args) {
        System.out.print(&quot;sqrt(1)=&quot; + sqrt(&quot;1&quot;));
        System.out.print(&quot;\tsqrt(25)=&quot; + sqrt(&quot;25&quot;));
        System.out.print(&quot;\tsqrt(26)=&quot; + sqrt(&quot;26&quot;));  // sqrt(26)==5 &#21621;&#21621;,&#22240;&#20026;&#21482;&#26377;&#25972;&#25968;&#37096;&#20998;
        System.out.print(&quot;\tsqrt(100)=&quot; + sqrt(&quot;100&quot;));
        System.out.println(&quot;\tsqrt(144)=&quot; + sqrt(&quot;144&quot;));
        
        // &#29983;&#25104;&#19968;&#20010; 5000 &#20301;&#20197;&#20869;&#30340;&#25968;
        StringBuffer sb = new StringBuffer(&quot;&quot;);
        Random rand = new Random();
        int length = rand.nextInt(5000)+1;
        for (int i=0; i&lt;length; i++)
            sb.append(rand.nextInt(10));
        String theNumber = sb.toString();

        System.out.println(&quot;n:&quot; + sb.toString());
        System.out.println(&quot;&#20301;&#25968;:&quot; + length);

        // &#24320;&#26041;
        long t = System.currentTimeMillis();
        BigInteger result = sqrt(theNumber);
        t = System.currentTimeMillis()-t;

        System.out.println(&quot;sqrt(n)=&quot; + result.toString());
        System.out.println(&quot;&#29992;&#26102;:&quot; + t + &quot;&#27627;&#31186;&quot;);
    }

    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&gt;=0; i--) {
                t = res.multiply(twenty).add(BigInteger.valueOf(i)).multiply(BigInteger.valueOf(i));
                if (t.compareTo(v)&lt;=0) {
                    x = t;
                    break;
                }
            }
            res = res.multiply(BigInteger.TEN).add(BigInteger.valueOf(i));
            few = v.subtract(x);
            pos++;
            if (pos&gt;length) break;
            tmpString = theNumber.substring(pos-1, ++pos);
        }
        return res;
    }
</textarea>]]></content><publish>2009-05-21 03:55:16</publish><update>2009-05-21 03:55:16</update><comment>0</comment><view>3602</view></article><comments/><previous id="167"><title>[JAVA]放个可以做简单数学四则运算的东东</title></previous><next id="169"><title>那些可爱人儿</title></next></content></panel></panels><modules><module id="4" sn="3" sys="true"><name>Category</name><title>日志分类</title></module><module id="6" sn="4" sys="true"><name>Archive</name><title>日志归档</title></module><module id="5" sn="5" sys="true"><name>User Panel</name><title>控制面板</title></module><module id="10" sn="6" sys="true"><name>Recent Article</name><title>最新日志</title></module><module id="8" sn="7" sys="true"><name>Search</name><title>查询搜索</title></module><module id="7" sn="8" sys="true"><name>Recent Comments</name><title>最新评论</title></module><module id="2" sn="9" sys="true"><name>Statistics</name><title>统计信息</title></module></modules><user><usn></usn><status>3</status><login>false</login></user></blog>
