求约分的方法有很多种,这里提供两种常见的方法:
方法一:暴力循环法
这种方法通过从2开始试除,直到找到分子和分母的最大公约数(GCD),然后将分子和分母分别除以这个最大公约数,从而得到最简分数。
```c
include
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
void simplify_fraction(int *numerator, int *denominator) {
int common_divisor = gcd(*numerator, *denominator);
*numerator /= common_divisor;
*denominator /= common_divisor;
}
int main() {
int numerator, denominator;
printf("请输入一个分数(分子/分母):");
scanf("%d/%d", &numerator, &denominator);
simplify_fraction(&numerator, &denominator);
printf("%d/%d\n", numerator, denominator);
return 0;
}
```
方法二:辗转相除法(欧几里德算法)
这种方法使用递归或循环来实现辗转相除法,最终得到最大公约数,然后将分子和分母分别除以这个最大公约数,从而得到最简分数。
```c
include
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
void simplify_fraction(int *numerator, int *denominator) {
int common_divisor = gcd(*numerator, *denominator);
*numerator /= common_divisor;
*denominator /= common_divisor;
}
int main() {
int numerator, denominator;
printf("请输入一个分数(分子/分母):");
scanf("%d/%d", &numerator, &denominator);
simplify_fraction(&numerator, &denominator);
printf("%d/%d\n", numerator, denominator);
return 0;
}
```
这两种方法都可以有效地求出分数的最简形式。你可以根据自己的需求和喜好选择其中一种方法来实现。