spark的数三角形算法_开方算法

8ba264e57673314017c6b61f19d207b1.png

开方算法的依据是

当n=2时,得到开平方的依据(a+b)²-a²=b(2a+b)。

为例。

①小数点为准,两位分一节。分成32'14'89。因为

。即,底数小数点移动n位,平方幂小数点就移动2n位。况且,最大的一位数的平方幂是两位数。(9²=81)

②视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
321489的平方根是567

再举一例,计算

精确到千分位。笔算如下:

39b388faaadcbeeb3be9f47c7b4a1b62.png
2的平方根是无理数,约等于1.4142135623730950488016887242097

所以

由以上计算过程可以看出,在没有《平方根表》和电子计算工具的环境下,开平方是多么繁琐,开平方的位数越多,计算越繁琐。读者们想不想体验一下祖冲之的辛苦?

Mephisto:圆周率算法​zhuanlan.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值