#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 的数并输出。
代码有一个语法错误:在 `num--` 后面缺少分号。另外,逻辑上虽然能工作,但效率较低。
- 检查 `num--` 这一行,C语言中每条语句必须以分号结束。
- 思考一下,如果 x 或 y 是负数,程序会怎样?题目是否要求处理负数?