【问题描述】输入两个数m和n,输出他们的最大公约数和最小公倍数 【输入形式】下划线为输入内容,"Inupt m,n:"为提示信息,需跟换行符 Input m,n: 3 7 【输出形式】分别输出最大公约数和最小公倍数,以空格分隔 C语言题目
时间: 2024-10-16 16:20:38 浏览: 27
2021级第一次社团联考试卷.pdf
【解答】这是一个典型的求最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)的问题。在C语言中,你可以使用欧几里得算法(Euclidean Algorithm)来计算最大公约数,然后利用公式 `LCM(a, b) = |a * b| / GCD(a, b)` 来求解最小公倍数。以下是C语言代码示例:
```c
#include <stdio.h>
// 求最大公约数的欧几里得算法
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 求最小公倍数
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int m, n;
printf("Input m,n:\n");
scanf("%d%d", &m, &n);
// 计算并输出结果
int result_gcd = gcd(m, n);
int result_lcm = lcm(m, n);
printf("最大公约数: %d\n", result_gcd);
printf("最小公倍数: %d\n", result_lcm);
return 0;
}
```
当你运行这个程序并输入3和7时,它会返回它们的最大公约数(即1)和最小公倍数(即21)。记得在实际编写时,要处理用户输入的边界情况,如负数、零等。
阅读全文