码迷,mamicode.com
首页 > 其他好文 > 详细

求整数n的平方根(不用库函数)

时间:2014-09-16 17:28:50      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:笔试   算法   java   

<span style="font-size:14px;">
</span>
今天在图书馆借了一本《高效能程序员的修炼》,内容幽默风趣。(其实我是看到作者是stack overflow创始人,才借的)。看到几十页中有一个例子是关于求平方根的,代码很简单,但是```第一次没看懂····才知道原理是根据牛顿-拉夫逊方法即牛顿迭代法,具体细节大家可以百度一下。


<span style="font-size:14px;">private double SquareBootAppr(int n)
{
double r=n/2;
while(abs(r-n/r)>t)   //t=0.0000001
{
r=0.5*(r+n/r);
}
return r;
}</span>

还有一种方法,就是通过移位。开平方根反过来是求平方,只要判断结果的平方是否小于n.小于n,则最高位置1,反之置0.(没有第一种方法精度高)

<span style="font-size:14px;">private double SquareBootAppr(int n)
{
int  r=0;
for(int i=15;i>0;i++)
{
if((r+(1<<i))*(r+(1<<r))<n)
{
r+=1<<i;
}
}
return r;
}</span>


求整数n的平方根(不用库函数)

标签:笔试   算法   java   

原文地址:http://blog.csdn.net/tenderhearted/article/details/39318711

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!