摘 要:算法是《普通高中數(shù)學(xué)課程標(biāo)準(zhǔn)(實(shí)驗(yàn)稿)》新增內(nèi)容之一,作為高中數(shù)學(xué)新課改的必修內(nèi)容,并提出“通過閱讀中國古代數(shù)學(xué)中的算法案例,體會(huì)中國古代數(shù)學(xué)對(duì)世界數(shù)學(xué)發(fā)展的貢獻(xiàn)”的要求. 由湖南教育出版社出版的普通高中課程標(biāo)準(zhǔn)實(shí)驗(yàn)教科書(必修)數(shù)學(xué)第五冊(cè)(以下簡稱課本)第11章“算法初步”中,介紹了我國古代數(shù)學(xué)名著《九章算術(shù)》中的“更相減損術(shù)”. 下面是筆者在教學(xué)中對(duì)“更相減損術(shù)”的解讀與思考.
關(guān)鍵詞:新課標(biāo);更相減損術(shù);輾轉(zhuǎn)相減法;輾轉(zhuǎn)相除法;
“更相減損術(shù)”的由來
1. 對(duì)古代名著原文的解讀
筆者查閱《九章算術(shù)》“方田”章的第六題原文:
“又有九十一分之四十九.問:約之,得幾何?答曰:十三分之七.”
約分術(shù)曰:可半者半之,不可半者,副置分母、子之?dāng)?shù),以少減多,更相減損,求其等也,以等數(shù)約之.
《九章算術(shù)》是以算籌為算具的數(shù)學(xué)書,現(xiàn)將上述算題作籌算圖式,以幫助我們領(lǐng)會(huì)“更相減損術(shù)”術(shù)文的真實(shí)含義.
由此可見,“更相減損術(shù)”是一個(gè)分?jǐn)?shù)化簡為既約分?jǐn)?shù)的算法.翻譯為現(xiàn)代語言如下:
第一步:任意給定分?jǐn)?shù)(m,n為兩個(gè)正整數(shù));判斷m,n是否都是偶數(shù). 若是,用2約簡;若不是,才執(zhí)行第二步.
第二步:對(duì)分子和分母輾轉(zhuǎn)相減,以較大的數(shù)減去較小的數(shù),接著把所得的差與較小的數(shù)比較,并以大數(shù)減去小數(shù). 繼續(xù)這個(gè)操作,直到所得的數(shù)相等為止.
第三步:以等數(shù)約之,可得到(最簡)既約分?jǐn)?shù).
2. “更相減損術(shù)”是一種算法
但是課本上說更相減損術(shù)是計(jì)算兩個(gè)數(shù)最大公因數(shù)的算法,有待商榷. 如果我們利用古代原著更相減損術(shù)的計(jì)算步驟來計(jì)算下面這個(gè)例子,則得出矛盾.
例1 利用更相減損術(shù)計(jì)算18與12的最大公約數(shù).
解:第一步:由于18與12均為偶數(shù),用2約簡得到9和6;
第二步:把9和6以大數(shù)減去小數(shù),并輾轉(zhuǎn)相減,直到所得到的數(shù)相等為止. 過程如圖2所示.
所以,18與12的最大公約數(shù)為3(等數(shù)). 這顯然是一個(gè)錯(cuò)誤的結(jié)果.
這一例子說明課本對(duì)“更相減損術(shù)”術(shù)文的理解有些問題,因此,我們得出結(jié)論:“更相減損術(shù)”并不是求兩個(gè)數(shù)最大公因數(shù)的方法,而是一個(gè)分?jǐn)?shù)化簡為既約分?jǐn)?shù)的算法.
“更相減損術(shù)”的更新
1. 對(duì)古代名著原文的改進(jìn)
我們知道,分?jǐn)?shù)化簡與求最大公約數(shù)是密不可分的. “更相減損術(shù)”中的“副置分母、子之?dāng)?shù),以少減多,更相減損,求其等也”,當(dāng)省去“可半者半之,不可半者”就是求兩個(gè)整數(shù)最大公約數(shù)的算法,我們不妨稱之為“輾轉(zhuǎn)相減法”.
翻譯為現(xiàn)代語言如下:任意給定兩個(gè)正整數(shù),以較大的數(shù)減去較小的數(shù),接著把所得的差與較小的數(shù)比較,仍以大數(shù)減去小數(shù). 繼續(xù)這個(gè)操作,直到所得的數(shù)相等為止,則這個(gè)數(shù)(等數(shù))就是所求的最大公約數(shù).
例2 求18與12的最大公約數(shù).
解:由下述輾轉(zhuǎn)相減過程可得18與12的最大公約數(shù)為6.
解:我們類似《九章算術(shù)》的籌算推演過程來表述輾轉(zhuǎn)相減法的操作步驟
所以,98與63的最大公約數(shù)等于7.
2. “輾轉(zhuǎn)相減法”原理的證明
我們進(jìn)一步思考,為什么通過輾轉(zhuǎn)相減,最后那個(gè)等數(shù)就是這兩個(gè)正整數(shù)的最大公約數(shù)呢?
不難發(fā)現(xiàn),這其實(shí)就是“初等數(shù)論”中的一些原理.下面,我們從理論出發(fā),著重來證明利用“輾轉(zhuǎn)相減法”求正整數(shù)a和b的最大公約數(shù).
證明:設(shè)a和b的最大公約數(shù)(a,b)=d,則a=a1d,b=b1d,顯然a1和b1互素,即(a1,b1)=1. 不妨令a>b,所以a-b=(a1-b1)d,進(jìn)一步得到a1-b1,a1,b1兩兩互素. 若不然令(a1-b1,a1)=d1>1,則d1a1,d1(a1-b1),得到d1b1,與(a1,b1)=1矛盾. 現(xiàn)在a和b的最大公約數(shù)可以轉(zhuǎn)化為b和a-b的最大公約數(shù),由上面論證b=b1d,a-b=(a1-b1)d,(a1-b1,b1)=1;若(a1-b1)d=b1d,即a1-b1=b1時(shí),算法結(jié)束. 由(a1-b1,b1)=1得到a1-b1=b1=1,則a和b的最大公約數(shù)為最后的等數(shù)d;若(a1-b1)d≠b1d,即a1-b1≠b1,可繼續(xù)作減法,重復(fù)上述過程,直到出現(xiàn)等數(shù)d為止. 由于a,b都是有限數(shù),所以在有限步減法后一定能出現(xiàn)相等的數(shù)d,證畢.
“更相減損術(shù)”的拓展
1. “輾轉(zhuǎn)相減法”的演變
我們寫出用“輾轉(zhuǎn)相減法”求7267與6192的最大公約數(shù)的籌算推演過程,發(fā)現(xiàn)書寫很復(fù)雜,能不能簡化?按減去相同的數(shù)的步驟合并書寫可得簡潔一些的表示形式:
我們不妨將上述過程用等式表示:
7267-6192×1=1075,即7267=6192×1+1075,
6105-1075×5=817,即6105=1075×5+817,
1075-817×1=258,即1075=817×1+258,
817-258×3=43,即817=258×3+43,
258-43×5=43,即258=43×5+43(帶余除法要求寫為258=43×6+0).
觀察右邊一系列等式,你得到了什么規(guī)律?
我們首先是用7267和6192中的較小數(shù)除較大數(shù),得商為1,余數(shù)為1075;然后將前一步驟的除數(shù)作為被除數(shù),余數(shù)作為除數(shù),再作帶余除法求余數(shù);繼續(xù)重復(fù)上述步驟,直到余數(shù)等于零為止,最后一式的除數(shù)就是“輾轉(zhuǎn)相減法”的“等數(shù)”,即兩個(gè)數(shù)的最大公約數(shù). 這種求兩個(gè)數(shù)的最大公約數(shù)的方法就是“輾轉(zhuǎn)相除法”.
2. “輾轉(zhuǎn)相除法”原理及步驟
“輾轉(zhuǎn)相除法”,又叫做“歐幾里得算法”,是公元前300年左右的希臘數(shù)學(xué)家歐幾里得在他的著作《幾何原本》中提出的. 利用這個(gè)方法,可以較快地求出兩個(gè)正整數(shù)的最大公約數(shù)(greatest common divisor,簡寫為gcd;或highest common factor,簡寫為hcf).
利用輾轉(zhuǎn)相除法求最大公約數(shù)的步驟如下:
第一步:用較大的數(shù)m除以較小的數(shù)n得到一個(gè)商q0和一個(gè)余數(shù)r0;
第二步:若r0=0,則n為m,n的最大公約數(shù);若r0≠0,則用除數(shù)n除以余數(shù)r0得到一個(gè)商q1和一個(gè)余數(shù)r1;
第三步:若r1=0,則r1為m,n的最大公約數(shù);若r1≠0,則用除數(shù)r0除以余數(shù)r1得到一個(gè)商q2和一個(gè)余數(shù)r2;
……
依次計(jì)算直至rn=0,此時(shí)所得到的rn-1即為所求的最大公約數(shù).
古希臘的“輾轉(zhuǎn)相除法”是中國古代“輾轉(zhuǎn)相減法(更相減損術(shù))”的一個(gè)簡潔表示的形式,它們?cè)诶碚撋鲜且恢碌模?明顯看出,“輾轉(zhuǎn)相減法”和“輾轉(zhuǎn)相除法”都是求最大公約數(shù)的方法. 從計(jì)算上看,輾轉(zhuǎn)相除法以除法為主,更相減損術(shù)以減法為主,計(jì)算次數(shù)上輾轉(zhuǎn)相除法計(jì)算次數(shù)相對(duì)較少,特別當(dāng)兩個(gè)數(shù)字大小區(qū)別較大時(shí)計(jì)算次數(shù)的區(qū)別較明顯;從結(jié)果體現(xiàn)形式來看,輾轉(zhuǎn)相除法體現(xiàn)結(jié)果是以相除余數(shù)為0則得到,而更相減損術(shù)則以減數(shù)與差相等而得到.
“更相減損術(shù)”的人文價(jià)值
“更相減損術(shù)”出自西漢末年的《九章算術(shù)》,是當(dāng)時(shí)中國古代數(shù)學(xué)優(yōu)秀的算法之一.《九章算術(shù)》是世界上最早系統(tǒng)敘述了分?jǐn)?shù)運(yùn)算的著作,是幾代人共同勞動(dòng)的結(jié)晶,它的出現(xiàn)標(biāo)志著中國古代數(shù)學(xué)體系的形成,為世界數(shù)學(xué)的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ). “更相減損術(shù)”蘊(yùn)涵了豐富的算法思想,現(xiàn)代技術(shù)的發(fā)展使古老的算法煥發(fā)了前所未有的生機(jī)和活力,是中國古代數(shù)學(xué)思想在一個(gè)新的層次上的復(fù)興. 古代算法的作用重在培養(yǎng)學(xué)生的思維能力,同時(shí)它較之現(xiàn)代數(shù)學(xué)仍發(fā)揮了很大的作用,更相減損術(shù)在現(xiàn)代仍有理論意義和實(shí)用價(jià)值. 吳文俊教授說:“在我國,求兩數(shù)最大公約數(shù)即等數(shù),用更相減損之術(shù),將兩數(shù)以小減大累減以得之,每次所得兩數(shù)與前兩數(shù)有相同的等數(shù),兩數(shù)之值逐步減少,因而到有限步后必然獲得相同的兩數(shù),也即所求的等數(shù).” 吳先生的話不僅說明了此法的理論價(jià)值,而且指明學(xué)習(xí)和研究的方向. 更相減損術(shù)很有研究價(jià)值,它奠定了我國漸近分?jǐn)?shù)、不定分析、同余式論和大衍求一術(shù)的理論基礎(chǔ). 通過給學(xué)生上述相關(guān)的信息讓學(xué)生明白學(xué)習(xí)古代算法更重要的是把握它的精髓,發(fā)揮并運(yùn)用其精華之處并進(jìn)一步發(fā)展它. 在引導(dǎo)學(xué)生時(shí)既不避諱它的短處,更要發(fā)揚(yáng)它的精髓.
結(jié)束語
“更相減損術(shù)”是中國古代數(shù)學(xué)的瑰寶,我們從中感悟到中國數(shù)學(xué)的機(jī)械化算法思想及其對(duì)世界數(shù)學(xué)發(fā)展的貢獻(xiàn),領(lǐng)略到中國古代數(shù)學(xué)對(duì)現(xiàn)代計(jì)算機(jī)算法的影響. 通過更新與拓展“更相減損術(shù)”的過程,對(duì)于學(xué)生而言,學(xué)習(xí)了有條理地、清晰地表達(dá)解決問題的步驟,培養(yǎng)學(xué)生邏輯思維能力與表達(dá)能力,發(fā)展從具體問題中提煉算法思想的能力,這正是新課標(biāo)對(duì)學(xué)生數(shù)學(xué)能力的一種基本要求.