最新消息:网站改版咯

埃及分数

C语言 Yovae 1734浏览

埃及分数问题描述:

分子为1 的分数称为埃及分数,现输入一个真分数,请将该分数分解为埃及分数。若真分数的分子a能整除分母b,
则真分数经过化简就可以得到埃及分数,若真分数的分子不能整除分母,则可以从原来的分数中分解出一个分母为b/a+1的埃及分数。

解法分析:

分子为1 的分数称为埃及分数,现输入一个真分数,请将该分数分解为埃及分数。若真分数的分子a能整除分母b,则真分数经过化简就可以得到埃及分数,若真分数的分子不能整除分母,则可以从原来的分数中分解出一个分母为c=b/a+1的埃及分数。
然后令a=a*c-b,b=b*c,{a/b=1/c+(a*c-b)/(b*c)}

源码:

/*
 * coding:Yovae 2011-5-12
 * www.yovae.com
 * 埃及分数 
*/

#include <stdio.h>

int main()
{
    int a,b,c;
    while(true)
    {
      printf("Input a/b:");
      scanf("%d/%d",&a,&b);
      while(true)
      {
         if(b%a)
         {
           c=b/a+1;
            
         }
         else
         {
             b=b/a;a=1;
         }
         if(a==1)
         {
            printf("%d/%d",a,b);
            break;
         }
         else
         {
              c=b/a+1;
         }
         a=a*c-b;
         b=b*c;
         printf("1/%d+",c); 
         if(a==3) /*若余数为3,输出最后两个埃及分数*/
         { 
            printf("1/%ld + 1/%ld\n",b/2,b); 
            break;
         }          
         
         
      }
      printf("\n");
    }
}


转载请注明:Yovae Studio » 埃及分数