c语言中分别使用 do—while 和 while两种方法用欧几里德算法求两个正整数的最大公约数
时间: 2024-10-15 07:09:26 浏览: 40
欧几里德算法求最大公约数——C++代码
在 C 语言中,利用 do-while 和 while 循环结构可以编写一个欧几里得算法(也称为辗转相除法)来计算两个正整数 a 和 b 的最大公约数 (GCD)。下面是两种方法的简单示例:
**do-while 方法:**
```c
#include <stdio.h>
int gcd_do_while(int a, int b) {
int temp;
do {
if (b == 0) {
return a;
}
temp = a % b; // 计算余数
a = b; // 更新a为b
b = temp; // 更新b为余数
} while (temp != 0);
return a;
}
int main() {
int num1, num2;
printf("请输入两个正整数: ");
scanf("%d %d", &num1, &num2);
int result = gcd_do_while(num1, num2);
printf("两数的最大公约数是: %d\n", result);
return 0;
}
```
**while 方法:**
```c
int gcd_while(int a, int b) {
int temp;
while (b != 0) {
temp = a % b; // 交换a和b的位置并计算余数
a = b;
b = temp;
}
return a;
}
// 主函数部分与上面相同
```
这两种方法都是通过不断将较大的数除以较小的数,并取余数,直到余数为0,此时较小的数就是最大公约数。
阅读全文