欢迎光临
我们一直在努力

C语言 最简分式,如何判断最简分式

Description
我们知道,5/3=1+3/5,称等号后面的式子为最简分式。也就是说,在分式中,分子一定要小于分母,而且分子、分母是互质的。请写一个程序,对于用户输入的一个合法分式,输出其约简之后的结果。

Input
输入有多行,每行是“m/n”的格式表示的一个分式,其中m和n都是int类型范围内的正整数。
输入至EOF结束。

Output
输出的行数与输入一致,且每行输出与上述输入一一对应。

如果约简后,分子部分是0,则只输出整数部分。

如果整数部分是0,则按照“j/k”的格式输出;

如果整数部分不是0,则按照“i+j/k” 的格式输出约简后的结果。

其中i、j和k分别是约简后的整数部分、分子部分和分母部分。

Sample Input
100/56
8/4
3/5

Sample Output
1+11/14
2
3/5

#include<stdio.h>int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); //找最大公约数}int main(){ int m,n,a,x; while(scanf(“%d/%d”,&m,&n)!=EOF) { if(m%n==0) printf(“%d\n”,m/n); else if(m==0) printf(“0\n”); else { a=m/n; x=gcd(m,n); if(x==1) { if(a!=0) { m=m-a*n; printf(“%d+%d/%d\n”,a,m,n); } else printf(“%d/%d\n”,m,n); } else { if(a!=0) { m=m-a*n;} while(m%x==0 && n%x==0) { m/=x; n/=x; } if(a==0) { printf(“%d/%d\n”,m,n); } else vps云服务器 printf(“%d+%d/%d\n”,a,m,n); } } }}

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。