求平方根的两种简单算法

    技术2022-05-11  142

    求平方根的算法

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

    2.条件:N(N+2*Q*R) <=Yn进制时,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)Bsqrt(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   ......   ......


    最新回复(0)