解题思路:
最先想到的是把原数对自己的最大埃及数做减法,直到减完为止。
1. 找最大埃及分数
要找出b/a的最大埃及数(a>b)。利用倒数即可推出最大埃及数
a/b = d…k(余数)
a=d * b + k; a /b=d + k /b; b /a= 1 /(d + k /b);
这里的k/b小于1;所以b/a的最大埃及数为1 /(d+1)
分母大的反而小;然后对b/a做减法即可
2 . 对自己循环做减法
令c=d+1;
但不能直接用分数的形式做减法——b/a - 1 /c= ( b * c -a) /(a*c);
然后就进行下一次的找最大埃及数 直到a/b没有余数即可。
3 . 循环出口
当b /a没有余数时,最后的那个埃及分数就为1 /d了;就可以不用再循环了。
代码部分:
#indlude <stdio.h>
void main()
{
int a,b,c,d;
scanf("%d%d",&a,&b);
printf("%d/%d=",a,b);
while(0 != b%a)
{
d=b/a;
c=d+1;
printf(“1/%d+”,c);
a=ac-b;
b=bc;
}
printf(“1/%d”,b/a);
}