用户输入两个数,求这两个数的最大公约数。
#include <stdio.h>
int gcd(int a, int b);
int main() {
int a, b;
printf("请输入两个正整数:\n");
scanf("%d %d", &a, &b);
if (b > a) {
int temp = a;
a = b;
b = temp;
}
printf("%d 和 %d 的最大公约数是 %d\n", a, b, gcd(a, b));
return 0;
}
int gcd(int a, int b) {
int temp;
while (b != 0) {
temp = a % b;
a = b;
b = temp;
}
return a;
}
在计算最大公约数时,两个数的大小关系并不影响计算结果。因此,我们可以在程序中对输入的两个数进行大小比较,并将较大的数赋值给 a,较小的数赋值给 b,从而确保 a 是较大的数。
在修改后的代码中,我们使用了一个 if 语句来判断 b 是否大于 a,如果是,则交换 a 和 b 的值。这里我们使用了一个中间变量 temp 来完成交换操作。最后,我们调用 gcd 函数,求解两个数的最大公约数,并输出结果。
需要注意的是,如果输入的两个数相等,则它们的最大公约数就是它们本身,因此在程序中没有对这种情况进行特殊处理。