俄罗斯农夫算法
来源:互联网 发布:淘宝双11销售排行榜 编辑:程序博客网 时间:2024/06/11 10:10
今天看到了一个十分有趣的算法,据说是俄罗斯的农夫发明的。特别适合在计算机里面算整数乘法。总结一下和大家分享。
我们来看简单的等式
m * n = (m /2 )* (2 * n) (如果m是偶数)
m * n = ((m -1)/2 )* (2 * n) + n (如果m是奇数)
利用这两个很简单的等式,即使你不会 九九乘法表也可以很简单的算出很大的数想乘的结果。
我们来看看运算步骤如下表
比如我们要计算 86 * 39
m
n
86
39
43
78
21
156
+78
10
312
+156
5
624
2
1248
+624
1
2496
那么结果就是 2496 + 78 + 156 + 624 = 3354
分析: 在计算机中除2与乘2的操作是很快的,用位运算就可以了,而且对于很大的数来讲,这种方法也是可行的,因为对这种算法讲,m是以指数下降的,即使一个32位才能表示的整数也只要移位31次就可以为1,在机器层面讲,乘法是比移位慢的多的操作。
因此,这个算法对整数计算是很有实际意义的!
- 俄罗斯农夫算法
- 算法_俄罗斯农夫法的乘法算法
- 俄罗斯农夫乘法(减治法)
- 农夫养牛问题的实现算法
- 农夫过河问题算法设计与实现
- 俄罗斯
- 图象处理基本算法[整理] 转自:农夫三拳
- 《算法与数据结构---C语言描述》里的农夫过河
- 农夫杀鸡
- 农夫养牛
- 农夫养牛
- 农夫过河
- 农夫过河
- 农夫过河
- 农夫过河
- 农夫过河
- 用BFS(广度优先搜索)算法解决农夫过河问题
- 算法系列之十四:狼、羊、菜和农夫过河问题
- OllyDbg
- Hi
- 孩子们入学时像个‘问号’,而毕业时像个‘句号’。(原来我们都是句号一族,非转不可。)
- 品牌竞争需要怎样的系统(原创)
- 定義容器的類型有三種限制
- 俄罗斯农夫算法
- [转贴]让收费网站去死吧,用google 突破
- 我是Lua初学者【2】
- ZT 技术不是第一位,商业模式是第一位
- 快开学了……
- 050925Learned the Latex
- 优秀员工的十大特征
- 制怒
- waggo去广告代码