用C语言求两个正整数的最大公约数MaxCommonFactor
时间: 2024-09-09 18:12:07 浏览: 59
用C语言求两个正整数的最大公约数(MaxCommonFactor)可以通过辗转相除法(也称欧几里得算法)实现。辗转相除法的基本思想是:两个正整数a和b(a > b),它们的最大公约数等于a除以b的余数c和较小数b的最大公约数。该算法可以递归地应用,直到余数为0,最后非零余数即为这两个数的最大公约数。
以下是用C语言实现辗转相除法的示例代码:
```c
#include <stdio.h>
// 函数声明
int MaxCommonFactor(int a, int b);
int main() {
int num1, num2, gcd;
// 输入两个正整数
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
// 计算最大公约数
gcd = MaxCommonFactor(num1, num2);
// 输出结果
printf("最大公约数是:%d\n", gcd);
return 0;
}
// 函数定义:使用辗转相除法求最大公约数
int MaxCommonFactor(int a, int b) {
if (b == 0) {
return a; // 如果余数为0,则a即为最大公约数
} else {
return MaxCommonFactor(b, a % b); // 递归调用
}
}
```
在这个程序中,`MaxCommonFactor` 函数是递归调用自身来实现辗转相除法,直到余数为0为止。在`main`函数中,我们读取用户输入的两个正整数,调用`MaxCommonFactor`函数计算它们的最大公约数,并输出结果。
阅读全文