提示:分子为1的分数称为埃及分数。 在此输入真分数。 请把这个分数分解成埃及分数。
分子为1的分数称为埃及分数。 在此输入真分数。 请把这个分数分解成埃及分数。
例如8/11=1/2 1/5 1/55 1/110。
问题分析与算法设计
如果真分数的分子a被分母b除尽,真分数被简化得到埃及分数,如果真分数的分子不能被分母除尽,就可以从原来的分数中解开分母为b/a 1的埃及分数。 用这种方法反复分解剩下的部分,最终会得到结果。
程序说明和注释
#包含
入主(void ) )。
{
long int a、b、c;
为wile (真)
{
printf (pleaseenteraoptionalfraction ) a/b ) : );
scanf('%LD/%LD )、a和b );
printf (itcanbedecomposedto : );
为wile (真)
{
if(b%a ) ) )。
c=b/a 1;
else{ c=b/a; a=1; () ) ) ) )。
if(a==1) )。
{
printf(1/%LD(n ),c );
黑;
() ) ) ) )。
else
printf(1/%LD )、c );
a=a*c-b;
b=b*c;
if(a==3) )。
{printf(1/%LD1/%LD(n ),b/2,b ); 黑; () ) ) ) )。
() ) ) ) )。
() ) ) ) )。
返回0;
() ) ) ) )。
*运行结果
pleaseenteraoptionalfraction (a/b ) : 1/6
It can be decomposed to: 1/6
pleaseenteraoptionalfraction (a/b ) : 20/33
itcanbedecomposedto :1/21/101/165
pleaseenteraoptionalfraction (a/b ) : 10/89
itcanbedecomposedto :1/91/801
pleaseenteraoptionalfraction (a/b ) : 19/99
itcanbedecomposedto :1/61/401/3960
pleaseenteraoptionalfraction (a/b ) : 8/87
itcanbedecomposedto :1/111/957
……(按ctrl-c退出)