欢迎光临散文网 会员登陆 & 注册

Python编程算法【三十一】列出真分数序列

2022-12-15 18:46 作者:SPC编程爱好者  | 我要投稿

【案例内容】

按递增顺序依次列出分母为40,分子小于40的真分数。
分子和分母只有公因数1的分数叫做最简分数,或者说分子或分母是互质数的分数叫做最简分数,又称既约分数,如2/3,8/9,3/8等。


【解题思路】

经分析,分母40,分子从1递增到39,就会存在分子、分母可以约分的情况。本题给出两种解法,供大家对比、参考:

解法一: 可以先定义一个函数,用来求两个数的最大公约数。如果最大公约数为1,说明这两个数互为质数,不用约分;如果最大公约数不为1,那么分子、分母就能约分,那么就把分子、分母同时除以最大公约数,再输出该分数。在求最大公约时,可以用短除法来做,简单讲就是用被除数 ÷ 除数,若余数为0,则除数就是最大公约数;若有余数,则把除数当被除数,余数当除数,继续去除,即:除数 ÷ 余数,这样反复操作直到余数为0,这时的除数就是最大公约数。全部代码请见图1。

解法二: 导入fractions模块中的Fraction函数,该函数自带约分的功能,全部代码请见图2。


【Python代码】

图1,常规做法
图2,导入fractions模块

通过两种解法相比较,我们发现,解法二只用了三行代码就搞定了。因此善于利用Python强大的模块,对于我们编程效率的提高是立竿见影的!

Python编程算法【三十一】列出真分数序列的评论 (共 条)

分享到微博请遵守国家法律