编写函数 gcd( int m, int n)返回m与n的最大公约数, 并编写主函数进行测试, 通过键盘输入两个正整数, 调用该函数求两个数的最大公约数并输出该值。
时间: 2024-12-18 21:31:21 浏览: 11
gcd.zip_between_gcd
当然,为了计算两个正整数 `m` 和 `n` 的最大公约数(Greatest Common Divisor, GCD),我们可以使用欧几里得算法(Euclidean algorithm)。这个算法的基本思想是利用辗转相除法,即较大的数除以较小的数,然后用余数替换原来的较大数,直到余数为0,此时的较小数就是两数的最大公约数。
以下是一个简单的C语言函数,用于计算gcd:
```c
#include <stdio.h>
// 定义函数 gcd
int gcd(int m, int n) {
if (n == 0) {
return m; // 如果n为0,则m即为最大公约数
} else {
return gcd(n, m % n); // 递归调用gcd函数,用m对n取模后的结果替代n
}
}
int main() {
int num1, num2;
printf("请输入第一个正整数: ");
scanf("%d", &num1);
printf("请输入第二个正整数: ");
scanf("%d", &num2);
if (num1 < 0 || num2 < 0) {
printf("输入错误!只有正整数才能求最大公约数。\n");
return 1;
}
// 计算并打印最大公约数
int result = gcd(num1, num2);
printf("两个数 (%d, %d) 的最大公约数是: %d\n", num1, num2, result);
return 0;
}
```
在这个程序中,`gcd` 函数负责递归地计算 gcd,而 `main` 函数则负责接收用户的输入并调用 `gcd`。如果用户输入的是负数,我们会提示错误信息。
阅读全文