求平方根的两种简单算法

王朝other·作者佚名  2006-01-08
宽屏版  字体: |||超大  

求平方根的算法

1.b=a/2;

while (abs(b*b-a)>e) // e为一个很小的数,指明了算法的精度

b=(b+a/b)/2;

2.

条件:N(N+2*Q*R) <=Y

n进制时,Q=n;R为上一次的结果;N为要试的满足条件的最大的值;Y为计算到这时的余数

(注意:补位时要看进制,如果为10进制,则应补100,即10*10;二进制时应补4,即2*2)

例1:10开方根(10进制)

sqrt(10)=3.1622776601683793319988935444327

3. 1 6 2

)10

9 <=N(N+2*Q*R)=3*(3+2*10*0)=9<10 上 3

1 00

61 <=N(N+2*Q*R)=1*(1+2*10*3)=61<100 上 1

39 00

37 56 <=N(N+2*Q*R)=6*(6+2*10*31)=3756<3900 上 6

1 44 00

1 26 44 <=N(N+2*Q*R)=2*(2+2*10*316)=12644<14400 上 2

17 56

....

....

例2:10开方根(2进制)

N(N+2*Q*R)

由于:

N=0或1

Q=2

R=未知

所以:

N(N+2*Q*R) <=> R<<2+1

(10)D=(1010)B

sqrt(10)=(3.1622776601683793319988935444327)D=(0011.0010 1001 1000)B

1 1. 0 0 1 0

)10 10

1 <=R<<2+1=0<<2+1=0+1=1<10 上 1

1 10

1 01 <=R<<2+1=1<<2+1=100+1=101<110 上 1

1 00

0 <=R<<2+1=11<<2+1=1100+1=1101>100 上 0

1 00 00

0 <=R<<2+1=110<<2+1=11000+1=11001>10000 上 0

1 00 00 00

11 00 01 <=R<<2+1=1100<<2+1=110000+1=110001<1000000 上 1

11 11

......

......

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有