zoukankan      html  css  js  c++  java
  • 埃及分数

    问题描述:将一个真分数用埃及分数表示

    代码示例:

     1 //埃及分数
     2 //问题描述:输入真分数a,b分别作分子分母(a<b),用埃及分数相加的形式表示出来
     3 #include<stdio.h>
     4 int a,b;
     5 
     6 int is_zfs(int x,int y)  //判断是否为真分数,分子为1即是
     7 {
     8     return x==1?1:0;
     9 }
    10 
    11 int gcd(int a,int b)    //递归方式求最大公约数,用的还是辗转相除
    12 {
    13     return b==0?a:gcd(b,a%b);
    14 }
    15 
    16 void simple(int *a,int *b)   //对新得到的真分数进行约分简化
    17 {
    18     int g=gcd(*a,*b);        //得到a和b的最大公约数
    19     *a/=g;
    20     *b/=g;
    21 }
    22 
    23 int main()
    24 {
    25     printf("输入分子分母的值用空格格开:");
    26     while(scanf("%d%d",&a,&b)==2)
    27     {
    28         printf("%d/%d=",a,b);
    29         while(1)
    30         {
    31             if(is_zfs(a,b))            //如果约分化简后为埃及分数,结束
    32             {
    33                 printf("%d/%d
    ",a,b);
    34                 break;
    35             }
    36             
    37             for(int i=2;a*i<=b;i++);//a*i<=b 等价于a/b<=1/i,这里是要第一个比a/b小的真分数
    38             printf("1/%d+",i);
    39             a=a*i-b;                //下面两句是对a/b-1/i的通分
    40             b=b*i;
    41             simple(&a,&b);
    42         }
    43         printf("输入分子分母的值用空格格开:");
    44     }
    45     return 0;
    46 }

    运行结果:

     参考链接:https://blog.csdn.net/huang1600301017/article/details/81022704?

  • 相关阅读:
    flask helloworld
    (16)centos7 日志文件
    (15)centos7 系统服务
    (14)centos7 进程管理
    (13)centos7 任务计划
    (12)centos7 环境变量配置
    [BZOJ2045]双亲数(莫比乌斯反演)
    bzoj2018 [Usaco2009 Nov]农场技艺大赛
    bzoj 1001 [BeiJing2006]狼抓兔子
    bzoj 5056: OI游戏 最短路树的计数
  • 原文地址:https://www.cnblogs.com/bboykaku/p/12728304.html
Copyright © 2011-2022 走看看