【文章內(nèi)容簡(jiǎn)介】
題的算法,就是更相減損術(shù).更相減損術(shù)求最大公約數(shù)的步驟如下:可半者半之,不可半者,副置分母之?dāng)?shù),以少減多,更相減損,求其等也,以等數(shù)約之.翻譯出來(lái)為:第一步:任意給出兩個(gè)正數(shù),判斷它們是否都是偶數(shù).若是,用2約簡(jiǎn);若不是,執(zhí)行第二步.第二步:以較大的數(shù)減去較小的數(shù),接著把較小的數(shù)與所得的差比較,并以大數(shù)減小數(shù).繼續(xù)這個(gè)操作,直到所得的數(shù)相等為止,則這個(gè)數(shù)(等數(shù))就是所求的最大公約數(shù).再?gòu)倪@個(gè)角度看一下“求a=204,b=85的最大公約數(shù)”的問題,S1步可以等價(jià)為等式:。S2步可以等價(jià)為等式:。這兩步從減法的角度可以理解為:20485,所得的差與減式中的較小數(shù)比較,再用大的數(shù)減小的數(shù),循環(huán)執(zhí)行以上步驟,直到結(jié)果為0。此時(shí)減數(shù)就是a和b的最大公約數(shù)。這一算法根據(jù)它的特點(diǎn),也可以用循環(huán)語(yǔ)句完成。參考代碼: /a放較大的數(shù),b放較小的數(shù)If a b Then m ← a a ← b b ← m /交換a,b中的數(shù)End If /確保a是a,b中較大的數(shù)r ← a – b /兩數(shù)相減While r ≠ 0 If b r Then a ← b b ← r Else a ← r End If r ← a – b /確保相減后仍用較大的數(shù)減去較小的數(shù)End WhilePrint b用“更相減損法”求多于兩個(gè)數(shù)的最大公約數(shù)就可以顯示出其優(yōu)越性【小結(jié)】比較輾轉(zhuǎn)相除法與更相減損術(shù)的區(qū)別(1)都是求最大公約數(shù)的方法,計(jì)算上輾轉(zhuǎn)相除法以除法為主,更相減損術(shù)以減法為主,計(jì)算次數(shù)上輾