最近文学成说19x19的乘法表:http://www.wenxuecity.com/news/2014/08/13/3511603.html 列了一段有关十几乘十几,分三步走的算法。
一个高手“草原-”在跟贴列出了它的很基本的原理。我觉得“草原-”应该是个搞算法的好手。如果真是搞 “算法分析”的话,应可比拟Knuth --- 就是从数学基础出发,找出基本的算法。电脑的CPU/算法其实都是这些基本计算而累叠起来的。
任何一个十几的数,乘上另一个十几的数,可分为三步: ( 例如 13 x14 )
1) 第一个数 加上 第二个数的个位数 : (13 + 4 =17)
2) 把这和 乘上 10 : (17 x 10 = 170)
3) 再加上 两个数之个位数的乘积: (3x4=12, 170+12 =182)
得出 13 x14 =182
“草原-”列出了它的很基本的原理,就是:(10+a) x (10+b) = (10+a+b) x 10 + a x b
我把它展开,给非理科的同学看:
--- 两个十几的数A和B相乘; 那么A就可以写成(10+a), B就可以写成(10+b)这种分位表示法。a是第一个十几的数之个位上的数值,b是第二个十几的数之个位上的数值
(这里, A和B都是小于20,大于10;a和b自然就是小于10,大于0的了。这样 十几的乘法,就转换为 小于10的 a和b的九九乘法了)
--- 理解了A和B的分位表示, 那么 A x B就有:
A x B = (10+a) x (10+b) = (10+a+b) x 10 + a x b = ((10+a) +b) x 10 + a x b
= (A+b) x 10 + a x b
--- (A+b) x 10 + a x b 就是那三步走的原理:
第一步: (A+b)
第二步: x10
第三步:+ ( a x b)
-----
结语:电脑CPU内的乘法器, 就是按这类算法设计的:
基本加法(加法器) --〉乘(移位) --〉再加法(加法-累加器) ---- 从而完成乘法