比较两个分数的大小
在数学中,比较两个分数的大小最常用的方法是通分,即找到分母的最小公倍数,将分子扩大相同倍数后再进行比较。我们可以用 C 语言来模拟这个过程。
核心思路
程序主要依赖两个步骤:
- 计算两个分母的最小公倍数(LCM)。
- 将两个分数转换为同分母形式,直接比较分子大小。
为了更直观地展示算法效率,代码中还加入了简单的计时功能。
代码实现
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 求最小公倍数
// 原理:LCM(a, b) = (a * b) / GCD(a, b)
long int gongbeishu(int a, int b) {
int temp;
int k1 = a, k2 = b;
// 使用欧几里得算法求最大公约数
while (a % b != 0) {
temp = a;
a = b;
b = temp % b;
}
return k1 * k2 / b;
}
int main() {
long int start, finish;
int a, b, c, d;
// 输入格式:a/b,c/d (例如 1/2,3/4)
printf("请输入两个分数 (格式:a/b,c/d): ");
scanf("%d/%d,%d/%d", &a, &b, &c, &d);
start = clock();
// 通分后比较分子
// 第一个分数变为:a * (LCM/b)
// 第二个分数变为:c * (LCM/d)
if (a * (gongbeishu(d, b) / b) - c * (gongbeishu(b, d) / d) > 0) {
printf("\n%d/%d > %d/%d\n", a, b, c, d);
} (a * (gongbeishu(d, b) / b) - c * (gongbeishu(b, d) / d) < ) {
(, a, b, c, d);
} {
(, a, b, c, d);
}
finish = clock();
(, (finish - start) / );
;
}


