C语言用欧几里德算法do-while求两个正整数最大公约数
时间: 2024-10-13 21:16:57 浏览: 52
最大公约数与最小公倍数-谭浩强c++简单详细版
在C语言中,我们可以使用欧几里得算法(也称为辗转相除法)结合do-while循环来计算两个正整数的最大公约数(GCD)。这个算法的基本思想是利用a除以b的余数,如果余数为0,则b就是最大公约数;否则将b赋值给a,原来的b赋值给余数,继续迭代,直到余数为0。
以下是使用do-while实现欧几里得算法的C语言代码示例:
```c
#include <stdio.h>
int gcd(int a, int b) {
int temp; // 临时变量
do {
if (a % b == 0) { // 如果a能被b整除,b即为最大公约数
return b;
} else { // 否则交换a和b,然后继续取模操作
temp = a; // 将a赋值给temp
a = b; // 更新a为b
b = temp % b; // 更新b为a除以b的余数
}
} while (b != 0);
}
int main() {
int num1, num2;
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("这两个数的最大公约数是:%d\n", result);
return 0;
}
```
在这个程序中,用户输入两个正整数,然后调用`gcd`函数计算它们的最大公约数,并打印结果。
阅读全文