在线编译器 C

#include <stdio.h> int main() { int a, b, r; scanf("%d%d", &a, &b); while (b != 0) { r = a % b; a = b; b = r; } printf("%d", a); return 0; }
这段代码实现了欧几里得算法,用于计算两个整数的最大公约数(GCD)。它通过反复用较小数除较大数并取余,直到余数为零,此时较大数就是最大公约数。

- 代码没有处理输入为负数的情况。如果输入负数,取模运算的结果可能为负,导致循环无法正确结束。考虑在循环前将a和b取绝对值。
- 代码也没有处理输入为零的情况。如果b为0,循环不会执行,直接输出a,这符合数学定义(gcd(a,0)=|a|),但a为0时输出0,而gcd(0,0)通常定义为0,但有些定义认为未定义。可以思考是否需要特殊处理。