在速算的背后

速算,看起来使人惊奇。弄清了它的根底,原来十分平常。

两数相乘,要是都是比 100 略小的数,例如 98×93,懂得窍门的人, 可以应声说出它的答案:9114。一算,确实不错。

怎么速算的呢?

容易看出,98×93 的积是 4 位数;98 对 100 的补数是 2,93 对 100 的补数是 7。用 98 减去 93 的补数 7,或者用 93 减去 98 的补数 2,得 91,这就是答案的前两位;两补数相乘,2×7=14,这就是答案的后两位。

要是两补数相乘得到的是一位数,就在前面补个 0,凑够两位;要是得到的是三位数,就进上一位。98×97=9506,95=98-3,06 是由 2×3=6 凑 0 得到的;86×92,86-8=78,14×8=112,结果是 7912。

这两步,说起来有点噜苏,用起来是非常干净利落的。

比 1000 或者 10000,100000,⋯⋯略小的数相乘,都可以如法炮制。为什么可以这样算呢?

两个数都比 100 或者 1000,10000,⋯⋯略小一些,就一定可以用 10n-a 和 10n-b 来表示,这里的 n、a 和 b 都是自然数,得到

(10n-a)(10n-b)=10n(10n-a-b)+ab。

右边第二项 ab,显然就是两个补数的乘积。右边第一项里的 10n-a-b, 可以看作(10n-a)-b,或者(10n-b)-a,这正是一个乘数减去另一个乘数的补数;10n 是添 0 数,是定留空位数的。

速算之所以能成功,就因为它是建立在恒等式的基础上的!

从速算背后,捉到了隐藏的恒等式,不要轻易放掉了它。在这里头,还可能找到更多的窍门。

你看,在恒等式

(10n-a)(10a-b)=10n(10n-a-b)+ab 中,把“-”换成“+”,它也

对。

(10n+a)(10n+b)=10n(10n+a+b)+ab。

这样,又学会了两个都比 100 或者 1000,10000,⋯⋯略大的数相乘的

速算法了。

1045×1006,

1045+6=1051,补三个 0 是 1051000,

45×6=270,结果是 1051270。

能把这两个速算法统成一个吗?

能。这只要推广一下补数的概念就行了。通常,比 100 小的数,例如 95, 它补上 5 就是 100,所以 5 叫做 95 的补数。那么,105 要补上多少才是 100 呢?只要补上—5 就行了。

这么说,比 100 略大的数,它的补数是负数。

可不是吗,100—a 是 a 的补数,a 比 100 大,补数是负的,完全合理。补数可以是负数,那开头说的方法,就不只可以用于两个略小于 100 或

者 1000,⋯⋯的数相乘,也可以用于两个略大于 100 或者 1000,⋯⋯的数相乘。这时,减去另一数的补数,因为补数是负的,实际上是加上一个正数。两个补数相乘,在补数是负的情况下,负乘负得正,后头部分也是正的!

再一想,两数相乘,要是一个比 100 或者 1000,⋯⋯略大,另一个略小,

这个方法也是可以用的。995×1046,1046-5=1041,

5×(-46)=-230,1041000-230=1040770。这就是答案。你不妨验算一

下。

这样看来,我们要两个数与 100 或者 1000,⋯⋯很接近,这个条件,在

那个恒等式里并不需要,只是速算的目的要我们这样做!实际上,随便两个数相乘,都能用这个方法。例如 57×34,这里的补数是 43 和 66, 34-43=-9, 补两个 0 是-900,43×66=2838,-900+2838=1938,这就是答案。

这样做,结果倒不错,可是比普通的算法还麻烦,就不是速算了。

在这个速算法的背后,躲着一个恒等式,那么、是不是在别的恒等式背后,也藏着别的速算法呢?

确实是的。

根据(a+b)(a-b)=a2-b2:

603×597=(600-3)(600+3)=360000-9=359991;

782-772=(78+77)(78-77)=155。

根据(a+b)2=a2+2ab+b2=a(a+2b)+b2: 252=2×300+25=625;

752=7×800+800+25=5625。

把它推广一下,由

(a+b)[a+(10-b)]=a(a+10)+b(10-b),

可以计算两个 10 位数相同、个位数互补的数相乘。76×74=7×800+4×6=5624。

最后,建议你想一下, 97×989 能不能速算?背后躲着哪个恒等式?

(谈柏祥)