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

<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>


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值