埃及分数问题
问题描述
分子为1 的分数称为埃及分数,现输入一个真分数,请将该分数按下面的方法分解为埃及分数: 1.若真分数的分子a能整除分母b,则真分数经过化简就可以得到埃及分数; 2.若真分数的分子不能整除分母,则可以从原来的分数中分解出一个分母为b/a+1的埃及分数; 3.用这种方法将剩余部分反复分解,最后可得到结果。如:8/11=1/2 + 1/5 + 1/37 + 1/4070。
输入样例:
一个分数如A/B的形式,例如:3/88
输出样例:
1/30 + 1/1320
问题分析
比如,2/15 一共有 4 种不同的分解法(姑且称为埃及分解法):
1/8 + 1/120
1/9 + 1/45
1/10 + 1/30
1/12 + 1/20
由于埃及分数都是以1为分子的,因此,假设最初的分数为A/B,那么如果A能够整除B,则埃及数为1/(B/A)
如果不能够整除时,能够从其中分离出来的最大的分子为1的分数就是1/((A/B)+1)
以2/7为例,能够从中分离出来的最大的分子为1的数是1/(7/2+1) = 1/4
分离出此数之后,再计算出剩下的余数,重复进行以上的判断即可
算法设计
- 要求用户输入分子a,分母b
- 判断a是否能够整除b
是: 将a置为1,b置为b/a 判断a是否为1
是:
直接输出a/b, 退出循环
否:
得到小于它的最大的埃及分数的分