Online Compiler C

#include <stdio.h> int gcd(int a,int b){ while(b!=0){ int n=b; b=a%b; a=n; } return a; } int main() { int a,b; scanf("%d%d",&a,&b); printf("%d",gcd(a,b)); return 0; }
这段代码实现了求两个整数的最大公约数(GCD)的欧几里得算法。程序从标准输入读取两个整数,调用 `gcd` 函数计算它们的最大公约数,然后输出结果。

- 在 `gcd` 函数中,你使用了变量 `n` 来暂存 `b` 的旧值,这是正确的。但要注意,当 `b` 为 0 时,循环结束,此时 `a` 就是最大公约数。你的代码逻辑是正确的。

- 一个潜在的问题是:如果用户输入负数,你的算法仍然能工作,因为取模运算的结果符号与被除数相同。但通常最大公约数定义为非负数,所以你可能需要考虑处理负数的情况。不过对于基本练习,当前代码已经足够。