Онлайн компилятор 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 的数并输出。

代码有一个语法错误:在 `num--` 后面缺少分号。另外,逻辑上虽然能工作,但效率较低。

- 检查 `num--` 这一行,C语言中每条语句必须以分号结束。
- 思考一下,如果 x 或 y 是负数,程序会怎样?题目是否要求处理负数?