编写程序,要求用户输入一个分数,然后将其约分为最简式。如:
输入一个分数:8/12
最简分式:2/3
我的思路是求出分子分母的最大公因数,分子分母同时除以最大公因数便得到了最简的分子与分母,代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,x,y,c;
printf("输入一个分式:");
scanf("%d/%d",&a,&b);
if(a<b)
{
x=b;y=a;
}
else
{
x=a;y=b;
}
c=x%y;
while(c)
{
x=y;
y=c;
c=x%y;
}
if(b/y!=1)
printf("最简分式为:%d/%d",a/y,b/y);
else
printf("最简分式为:%d",a/y);
return 0;
}
使用欧几里得定理求解,除一下得到最简形式
#include <stdio.h>
int gcd(int a, int b) {
return b ? gcd(b, a % b) : a;
}
int main() {
int a, b;
printf("Input the fraction(x/y):\n");
scanf("%d/%d", &a, &b);
int k = gcd(a, b);
printf("%d/%d", a / k, b / k);
return 0;
}
Input:
8/12
OutPut:
2/3