![8ba264e57673314017c6b61f19d207b1.png](https://i-blog.csdnimg.cn/blog_migrate/9943dab3a3b642f1b518c3969cd07064.png)
开方算法的依据是
当n=2时,得到开平方的依据(a+b)²-a²=b(2a+b)。
以
①小数点为准,两位分一节。分成32'14'89。因为
②视321489=(a+b)²。尽可能令a取大值,但是必须a²≤320000,显然a=500。然后求差求出c=(a+b)²-a²=321489-250000=71489,如果c=0,则计算结束。
③尽可能令b取大值, 但是必须0≤c-b(2a+b)<10(2a+b)。如果差值大于10(2a+b),则表示b值找小了;如果差值是负值,则表示b值找大了。如果差值恰好是0,则表示计算结束。容易证明b值是唯一的。上一步得到c=71489,2a=2×500=1000。
b=60,因为c-b(2a+b)=71489-60×1060=7889<10600,因为差值不是0,所以计算继续。
④更新a值与c值,a=560,c=7889,找新的b值,重复上述过程。直至达到精度或差值为0。b=7,因为c-b(2a+b)=7889-7×(2×560+7)=0,计算结束。最终结果a+b=560+7=567。
所以
以上只是算法陈述,真正的笔算过程如下:
![1219e163200a90f6ae6db7c416f08f17.png](https://i-blog.csdnimg.cn/blog_migrate/328e5bec2feb2737b631877f5c5c3300.jpeg)
再举一例,计算
![39b388faaadcbeeb3be9f47c7b4a1b62.png](https://i-blog.csdnimg.cn/blog_migrate/7a80cd4c9d688c9ea466bd7412b62534.jpeg)
所以
由以上计算过程可以看出,在没有《平方根表》和电子计算工具的环境下,开平方是多么繁琐,开平方的位数越多,计算越繁琐。读者们想不想体验一下祖冲之的辛苦?
Mephisto:圆周率算法zhuanlan.