在线编译器 C

#include <stdio.h> int main() { int x, y, digit1, digit2, num; scanf("%d %d", &x, &y); if (x >= y) { num = y; } else { num = x; } while (num>=1) { digit1 = x % num; digit2 = y % num; if (digit1 == 0 && digit2 == 0) { printf("%d", num); return 0; } num--; } return 0; }
这段代码试图计算两个整数 x 和 y 的最大公约数(GCD)。它从较小的数开始向下检查,找到第一个能同时整除 x 和 y 的数并输出。

- 变量命名容易引起误解:`digit1` 和 `digit2` 实际上是余数,不是数字位。建议使用更清晰的名称如 `rem1` 和 `rem2`。
- 代码逻辑正确,但效率较低。当 x 和 y 很大时,从较小数递减到 1 可能很慢。可以思考如何减少循环次数。