#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 可能很慢。可以思考如何减少循环次数。