关于印度式算法
(2014-03-20 20:40:24)分类: 反思随笔 |
转了个《印度式11-19两位数乘法口算方法》的帖子,满有意思。摘录如下:
“13×12=?
印度人是这样算的:
第一步:先把(13)跟乘数的个位数(2)加起来,13+2=15
第二步:然后把第一步的答案乘以10(也就是说后面加个0 )
第三步:再把被乘数的个位数(3)乘以乘数的个位数(2),2×3=6
(13+2)×10+6=156”
转天分享给学生,学生兴趣浓厚,很快便掌握了方法,并且提出要用更大的数来尝试一下,比如26×28,但试验的结果让人失望——这办法不灵了!
学生很不满足,纷纷表示要找到到底哪里出了问题。
那好吧,我们就来先从印度人的算法分析一下:
仍然以13×12为例。
首先,为什么一定要限制在11~19之内?
这是这种算法的先决条件。根据乘法交换律,13×12和12×13的积相等,在这种算法中,用第一个乘数加第二个乘数的个位数字,如果两个乘数的十位数字不同,势必造成相加的结果有差异,因为后续算法一致,一定会产生不同的积,这就违背了乘法交换律。也就是说,要采用这种算法,两个乘数的十位数字必须相同(13+2=12+3),那学生提出的26×28同样也满足这个要求。
其次,为什么要用(13+2)×10,然后再加上两个乘数个位数字的乘积呢?
分解一下13×12的计算过程:
用第二个乘数的个位数字2与第一个乘数的各个数位上的数相乘:2×3=6,2×10=20;
用第二个乘数的十位数与第一个乘数的各个数位上的数相乘:10×3=30,10×10=100。
以上计算中,共得到15个10(100+30+20),再加上个位数字乘积6,即可得到156。
对照可知,用(13+2)×10,实际上是将算得若干个10的计算合并了,然后再加上6。
有了以上的分析,那么,随着乘数十位数字的变化,计算中要去乘的那个整十数也必然要发生变化。则26×28可如此计算:
(26+8)×20=680
6×8=48
680+48=728
学生竖式验证的结果完全吻合。
至此豁然开朗,整理如下:
26×28
=(20+6)×(20+8)
= 20×20+20×8+20×6+6×8
=(20+6+8)×20+6×8
=(26+8)×20+6×8
= 680+48
= 728
那么,任何两个十位数字相同的两位数相乘,都是可以照办的了:
37×34=(37+4)×30+7×4=1230+28=1258
94×96=(94+6)×90+4×6=9000+24=9024
探索到此,学生已激动不能自已了——“老师太厉害啦!”
——厉害的不是老师,而是你们的追问帮大家找到了探索的方向!