开立方笔算法
来源:互联网 发布:2015软件评测师真题 编辑:程序博客网 时间:2024/03/28 16:42
开立方笔算法
陈梓瀚
今年在某次物理竞赛中忘了带计算器,需要计算开立方。当时不知道怎么笔算,所以只好一位一位地试。因此,我便想研究出一种开立方的笔算方法(我知道现在有,但是苦于找不到,所以只好自己来了)。
在刚开始研究是我不知道该如何入手,所以就去找了初二时候的代数书,里面有开平方笔算法和推导过程。它是这么写的:
在这里,我“定义”a^b=a的b次方。
(10a+b)^2 = 100a^2+20ab+b^2 = 100a^2+b(20a+b)
a代表的是已经计算出来的结果,b代表的是当前需要计算的位上的数。在每次计算过程中,100a^2都被减掉,剩下b(20a+b)。然后需要做的就是找到最大的整数b'使b'(20a+b')<=b(20a+b)。
因此,我就照着书里的方法,推导开立方笔算法。
(10a+b)^3 = 1000a^3+300a^2*b+30a*b^2+b^3 = 1000a^3+b[300a^2+b(30a+b)]
如果每次计算后都能减掉1000a^3的话,那么剩下的任务就是找到最大的整数b',使b'[300a^2+b'(30a+b')]<=b[300a^2+b(30a+b)]。
于是,我就设计了一个版式。下面就开始使用这个版式来检验开立方笔算法。
例如:147^3=3176523
一开始,如下图所示,将3176523从个位开始3位3位分开。(3'176'523)
第一步,我们知道,1^3 < 3 < 2^3,所以,第一位应该填1。
1^3 = 1,3 - 1 = 2,余2,再拖三位,一共是2176。
接下来这一步就比较复杂了。因为我水平有限,我现在还不能把它改造得比较好。
依照“b[300a^2+b(30a+b)]”,所以:
1^2*300=300,1*30=30,如图上所写。
第二位就填4,所以上图3个空位都填4。
然后(34*4+300)*4=1744,2176-1744=432,再拖三位得432523。
然后就照上面一样,
14^2*300=58800,14*30=420,如上图所写。
第三位就填7,所以上图下边3个空位都填7。
然后(427*7+58800)*7=432523,432523-432523=0,到此开立方结束。
在我以后的一些实践中,发现越往后开,300*a^2与b(30a+b)的差距就越大,寻找b的工作就越容易,因为结果中有一项是300*a^2*b。
如果大家有更好的办法的话,不妨法邮件给我,分享分享。我也会找机会把更好的方法放在主页上供更多的人学习使用。
- 开立方笔算法
- python 开立方注意事项
- 笔算开方
- 开立证券账户常见问题
- 笔算开n次方
- 根号笔算方法总结
- 【CBM666 的自制开立方涵数】
- 大整数运算---模拟笔算
- 恒生关闭HOMS系统开立功能
- 交易往事-交易账户开立及其注意事项
- 高精度乘法(用数组模拟笔算)
- 模拟笔算 (加 减 乘 除)
- 三位数乘两位数的笔算说课稿
- 决策树笔算和python代码实现
- 一开立刻死(Exlipse),Myeclipse卡,慢优化
- 结算账户的开立、使用、变更和撤销
- 线代矩阵相乘笔算的新简捷方法
- 牛顿法开平方
- Fedora Core4 运行Eclipse问题
- J2EE好文收藏
- 谁谋杀了Wrox
- PB中的Describe,Evaluatate,LookUpDisplay小结
- 程序员入门技巧
- 开立方笔算法
- 如何在 dataGrid 上的第一列加上 CheckBox,当选中某行的 CheckBox 后,那一行的 datagrid 变为绿色。
- 用struts+hibernate做网站中遇到的问题与解决过程[原创]
- 共享软件作者怎样才能月入万元(一)
- 在2000和xp下隐藏进程,VC6.0测试通过
- vb与sqlserver数据库连接的问题
- 共享软件作者如何才能月入万元(三)
- 《设计模式解析》第6章 Facade(外表)模式
- JAVA开发者应该去的20个英文网站