Python編程算法【三十一】列出真分數(shù)序列
【案例內(nèi)容】
按遞增順序依次列出分母為40,分子小于40的真分數(shù)。
分子和分母只有公因數(shù)1的分數(shù)叫做最簡分數(shù),或者說分子或分母是互質(zhì)數(shù)的分數(shù)叫做最簡分數(shù),又稱既約分數(shù),如2/3,8/9,3/8等。
【解題思路】
經(jīng)分析,分母40,分子從1遞增到39,就會存在分子、分母可以約分的情況。本題給出兩種解法,供大家對比、參考:
解法一: 可以先定義一個函數(shù),用來求兩個數(shù)的最大公約數(shù)。如果最大公約數(shù)為1,說明這兩個數(shù)互為質(zhì)數(shù),不用約分;如果最大公約數(shù)不為1,那么分子、分母就能約分,那么就把分子、分母同時除以最大公約數(shù),再輸出該分數(shù)。在求最大公約時,可以用短除法來做,簡單講就是用被除數(shù) ÷ 除數(shù),若余數(shù)為0,則除數(shù)就是最大公約數(shù);若有余數(shù),則把除數(shù)當被除數(shù),余數(shù)當除數(shù),繼續(xù)去除,即:除數(shù) ÷ 余數(shù),這樣反復操作直到余數(shù)為0,這時的除數(shù)就是最大公約數(shù)。全部代碼請見圖1。
解法二: 導入fractions模塊中的Fraction函數(shù),該函數(shù)自帶約分的功能,全部代碼請見圖2。
【Python代碼】


通過兩種解法相比較,我們發(fā)現(xiàn),解法二只用了三行代碼就搞定了。因此善于利用Python強大的模塊,對于我們編程效率的提高是立竿見影的!
標簽: