埃及分数指的是分子都为1的真分数。
当输入一个真分数时,可分为以下几种情况(为了便于求解这个问题,我们用a表示分子,b表示分母):
- 当a为1时,可以直接输出结果
- 当a能够被b整除时,可以直接输出结果,即1/(b/a)
- 当a=3且b为偶数时,可以直接输出分解的结果:1/(b/2)+1/b
- 当a不能被b整除时,需要将a/b分解为一个埃及分数和一个非埃及分数:一个埃及分数为1/(b/a+1),另一个非埃及分数为(a*c-b)/(b*c),这里的c=b/a+1
下面是python实现的过程:
if __name__ == '__main__':
fenzi = 50 # 表示分子
fenmu = 88 # 表示分母
print("{}/{}".format(fenzi, fenmu), end="=")
i = 3
while(i):
if fenzi == 1:
print("1/{}".format(fenmu))
break
elif fenmu % fenzi == 0:
print("1/{}".format(int(fenmu/fenzi)))
break
elif fenmu % 2 == 0 and fenzi == 3:
print("1/{} + 1/{}".format(int(fenmu/2), fenmu), end="+")
break
else:
value = int(fenmu/fenzi) + 1
fenzi = fenzi * value - fenmu #产生新的分子
fenmu = value * fenmu #产生新的分母
print("1/{}".format(value), end="+")
i -= 1
pass