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

Python编程算法【三十】将真分数分解为埃及分数

2022-12-13 22:02 作者:SPC编程爱好者  | 我要投稿

【案例内容】

分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。 如:%5Cfrac%7B8%7D%7B11%7D%20%20%3D%20%5Cfrac%7B1%7D%7B2%7D%20%2B%5Cfrac%7B1%7D%7B5%7D%20%2B%5Cfrac%7B1%7D%7B55%7D%20%2B%5Cfrac%7B1%7D%7B110%7D%20


【解题思路】

假设分子用fz表示,分母用fm表示,将真分数分解成埃及分数,主要解题思路总结如下: 第一种情况:如果fm能整除fz,那么埃及分数就是1/(fm/fz);比如3/6,其埃及分数为1/2 第二种情况:如果fz为3,fm是偶数,那么总能分解出1/fm及1/(fm/2)的埃及分数;比如3/16,可分解出1/16及1/8这两个埃及分数 其余情况:利用原真分数,求解出一个分母为(fm//fz+1),分子为1的埃及分数,其中"//"代表整除,可避免出现小数。接着将真分数减去该埃及分数后,将求得的差,再次通过上述三种情况进行判断,直到分子为1时停止循环。

在分解埃及分数时,可把分解出来的埃及分数存入到列表中,最后用带"+"的符号把它们循环输出即可。

本题可借助Fraction模块,它可接收两个整型参数,分别作为分子、分母,如Fraction(8, 11),即可表示8/11;它还能接受字符串型的分数,如Fraction("8/11"),也表示8/11,此外通过.numerator的属性,可拿到分子;.denominator的属性,可拿到分母。对于传入的两个参数,若能约分,它还会先帮你约分,比如Fraction(8, 12),得到的分数会是2/3,真可谓相当的方便!


【Python代码】

分解埃及分数代码
最终的测试结果

注意用循环反复分解出埃及分数,直到分子为1时停止循环,此时列表里的埃及分数之和,就等于原来的真分数。再次提醒一下Fraction模块的强大之处,除了能方便的使用分数外,用它来做加减乘除的四则运算,也是完全可以做到的。因此有了Fraction模块,事半功倍!

Python编程算法【三十】将真分数分解为埃及分数的评论 (共 条)

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