Python編程算法【三十三】最大公約數(shù)
【案例內(nèi)容】
求任意兩個正整數(shù)的最大公約數(shù)(Greatest Common Divisor,GCD)。
【解題思路】
求解最大公約數(shù)可以使用歐幾里德算法,也就是常說的輾轉(zhuǎn)相除法。它是用較大的數(shù)(當被除數(shù))去除較小的數(shù)(當除數(shù))。若除得盡,則較小的數(shù),即除數(shù),就是這兩個數(shù)的最大公約數(shù)。若除不盡,就先求出它們的余數(shù),再拿剛才較小的數(shù)去除這個余數(shù),反復操作直到除得盡為止,則此時的除數(shù)就是它們的最大公約數(shù)。
舉例來說,要求20和12的最大公約數(shù),先用較大的數(shù)20去除較小的數(shù)12,即20÷12,余數(shù)8;由于有余數(shù),再用12÷8,余數(shù)4;繼續(xù)用8÷4,此時除得盡,則4就是20和12的最大公約數(shù)。
【Python代碼】

本題采用函數(shù)來處理,并且假設(shè)傳入的第一個數(shù)比第二個數(shù)大,若除不盡再通過遞歸函數(shù)繼續(xù)處理,直到除盡為止,整個過程會比較清晰、易懂。不用函數(shù)也行,小伙伴們可以自行嘗試。
標簽: