辗转相除法(非递归)求最大公约数,用c语言举例代码
时间: 2024-09-19 15:15:16 浏览: 39
辗转相除法(也称为欧几里得算法)是一种古老的计算最大公约数(GCD)的方法,它的基本原理是两个整数的最大公约数等于其中较小的数和两数差的最大公约数。下面是一个使用C语言编写的非递归版本的辗转相除法求最大公约数的例子:
```c
#include <stdio.h>
// 函数声明
int gcd(int a, int b);
int main() {
int num1, num2;
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
// 使用gcd函数计算并打印结果
int result = gcd(num1, num2);
printf("这两个数的最大公约数是:%d\n", result);
return 0;
}
// 辗转相除法计算最大公约数
int gcd(int a, int b) {
while (b != 0) {
int temp = a % b; // 计算余数
a = b; // 更新a为b
b = temp; // 更新b为余数
}
return a; // 返回最后的a值即为最大公约数
}
```
在这个例子中,`gcd`函数通过反复将较大的数替换为其与较小数的余数,直到余数为零,此时较小的数就是最大公约数。
阅读全文