在线编译器 C

#include <stdio.h> int main() { int a,b; if(scanf("%d %d",&a,&b)==2){ while(b!=0) { int r=a%b; a=b; b=r; } printf("%d\n",a ); } return 0; }
这段代码实现了求两个整数的最大公约数(GCD)的欧几里得算法。它从输入读取两个整数,然后通过循环不断用余数替换除数,直到余数为零,最后输出最大公约数。

- 代码没有处理输入读取失败的情况。虽然检查了scanf返回值,但如果输入包含非数字字符,程序会直接结束而不输出任何结果,这可能不是期望的行为。
- 变量a和b在输入后没有检查是否为零。如果b初始为0,while循环不会执行,直接输出a,但此时a可能不是有效的最大公约数(例如输入0和0时输出0,而数学上未定义)。