有趣的速乘法


相信大家在小學時曾學過一種速算法,用來計算一個個位數為5的整數的平方。這種速算法是這樣的,設現在 要求35的平方,即35 x 35的結果。首先我們可以把35拆成兩部分:3和5,然後分別處理。其中5自乘後得25, 因此35 x 35的末兩位數字必為25。接著處理3,先把3加1得4,然後以4乘3得12,由此得35 x 35的首兩位數字 為12。因此35 x 35 = 1225。用同樣方法也可以很快求得45 x 45的結果,把4加1得5,以5乘4得20,因此45 x 45 = 2025。

大家有否想過這種速算法是從何而來的呢?其實只需一些初等代數的知識便能理解這種速算法的原理。在初等 代數中有這麼一條恆等式(Identity):

(x + y)2 = x2 + 2xy + y2

其實上述速算法就是利用這條恆等式得來的。一個個位數為5的數可以寫成10a + 5。應用以上恆等式,

(10a + 5)2 = 100a2 + 100a + 25 = 100a (a + 1) + 25

看到這裡,大家應已能明白上述速算法的奧妙所在了。假如仍未明白,請回顧剛才我們計算352的 情況。套用以上10a + 5的形式,這裡的a便是3(10x3+5=35),因此

352 = 100 x 3 x 4 + 25 = 1200 + 25 + 1225

現在大家應該明白在上述速算法中為何末尾兩位數字必定為25,也應該明白為何要把3加1後再乘3了。

其實假如我們把上述方法略加修改,還可以把這種速算法推廣到更多情況。設我們要求27 x 23的結果,請注 意這裡7 + 3 = 10。同樣我們把這兩個數先拆成兩部分:個位數和十位數。先處理個位數:7 x 3 = 21。接著 處理十位數2,同樣先把2加1得3,然後以3乘2得6,由此得27 x 23 = 621。神奇吧?
其實上述這種「推廣的速算法」也只需運用初等代數便能理解其箇中原理,不過今次情況較為複雜些。請注意 這種「推廣的速算法」只適用於相乘兩個數的十位數相等且個位數相加等於10的情況。對於這類數,我們可以 把它們分別寫為10a + b和10a + (10 - b)。接著我們試試把這兩個數相乘:

(10a + b)(10a + 10 - b) = 100a2 + 100a - 10ab + 10ab + 10b - b2 = 100a (a + 1) + b (10 - b)

請注意這裡的關鍵是-10ab和10ab互相抵消了。回顧剛才計算27 x 23的情況,這裡的a便是2,b便是7,因此

27 x 23 = 100 x 2 x 3 + 7 x 3 = 600 + 21 = 621

現在大家應該明白這種速算法的原理了。大家不妨找一些例子作練習,讓自己熟能生效。

最後請大家想想以下的問題,上述這種速算法能否再推廣至其他情況,例如兩個相乘的數的十位數不相等,或 者個位數相加不等於10的情況?為甚麼?


<!-- text below generated by server. PLEASE REMOVE --><!-- Counter/Statistics data collection code --><script language="JavaScript" src="http://l.yimg.com/d/lib/smb/js/hosting/cp/js_source/whv2_001.js"></script><script language="javascript">geovisit();</script><noscript><img src="http://visit.webhosting.yahoo.com/visit.gif?us1490235081" alt="setstats" border="0" width="1" height="1"></noscript><script type="text/javascript">(function (d, w) {var x = d.getElementsByTagName('SCRIPT')[0];var f = function () {var s = d.createElement('SCRIPT');s.type = 'text/javascript';s.async = true;s.src = "//np.lexity.com/embed/YW/be0aa169de7f441c6473361be62c9ef6?id=ddad453e7753";x.parentNode.insertBefore(s, x);};w.attachEvent ? w.attachEvent('onload',f) :w.addEventListener('load',f,false);}(document, window));</script>