定义一个函数gcd(),该函数实现求两个正整数m和n的最大公约数,在主函数中调用该函数,并输出计算结果。
时间: 2024-12-25 12:28:50 浏览: 0
在C语言中,我们可以使用欧几里得算法(Euclidean Algorithm)来定义一个函数gcd(Greatest Common Divisor,最大公约数)来求解两个正整数m和n的最大公约数。以下是相应的代码:
```c
#include <stdio.h>
// 定义求最大公约数的函数
int gcd(int m, int n) {
while (n != 0) {
int temp = m % n; // 计算余数
m = n; // 更新m为n
n = temp; // 更新n为余数
}
return m; // 最后m就是最大公约数
}
int main() {
int m, n;
printf("请输入两个正整数,用空格隔开:");
scanf("%d %d", &m, &n);
int result = gcd(m, n); // 调用gcd函数求最大公约数
printf("两数的最大公约数是:%d\n", result);
return 0;
}
```
在这个程序中,我们不断取余数并将较大的数替换为较小的数,直到余数为零,此时较小的数即为最大公约数。
相关问题
C语言 ■从键盘输入两个正整数m和n,求其最大公约数和最小公倍数。要求编写自定义函数GCD()和LCM( ),函数GCD()计算两个正整数的最大公约数,函数LCM()计算两个正整数的最小公倍数,在主函数中调用这两个函数计算并输出m和n的最大公约数和最小公倍数。
在C语言中,你可以通过编写两个自定义函数GCD()和LCM()来计算两个正整数的最大公约数(Greatest Common Divisor,简称GCD)和最小公倍数(Least Common Multiple,简称LCM)。这里是一个简单的实现示例:
```c
#include <stdio.h>
// 自定义函数,采用欧几里得算法计算GCD
int GCD(int m, int n) {
if (n == 0)
return m;
else
return GCD(n, m % n);
}
// LCM基于公式:a * b = GCD(a, b) * lcm(a, b),计算LCM
int LCM(int m, int n) {
return (m * n) / GCD(m, n);
}
int main() {
int m, n;
printf("请输入两个正整数m和n: ");
scanf("%d%d", &m, &n);
// 调用GCD和LCM函数计算结果
int gcd_result = GCD(m, n);
int lcm_result = LCM(m, n);
printf("最大公约数(GCD): %d\n", gcd_result);
printf("最小公倍数(LCM): %d\n", lcm_result);
return 0;
}
```
在这个程序中,首先通过`scanf()`从用户输入获取两个正整数m和n,然后分别调用GCD和LCM函数计算它们的值,并在main函数中输出结果。
定义一个函数gcd,功能是求两个正整数的最大公约数; 调用函数gcd,得到输入的两个正整数的最大公约数,并输出这个最大公约数。
以下是 Python 语言的实现:
```python
def gcd(a, b):
"""
求两个正整数的最大公约数
"""
while b:
a, b = b, a % b
return a
# 读取输入的两个正整数
num1 = int(input("请输入第一个正整数:"))
num2 = int(input("请输入第二个正整数:"))
# 调用函数gcd,计算最大公约数
result = gcd(num1, num2)
# 输出最大公约数
print("最大公约数是:", result)
```
在这个代码中,我们定义了一个函数 `gcd`,它使用欧几里得算法来计算两个正整数的最大公约数。然后我们读取用户输入的两个正整数,调用 `gcd` 函数来计算最大公约数,并输出结果。
阅读全文