求出两个非零正整数的最大公约数,最小公倍数;并作为函数值返回(要求:数据的输入、输出在主函数中实现C语言
时间: 2024-02-13 20:06:05 浏览: 121
习题8.1,8.3的编程实现过程
可以使用辗转相除法来求两个非零正整数的最大公约数,然后我们可以利用最大公约数来求得最小公倍数。下面是实现这个功能的代码:
```c
#include <stdio.h>
// 函数声明
int gcd(int a, int b);
int lcm(int a, int b);
// 主函数
int main() {
int a, b, gcd_num, lcm_num;
printf("请输入两个非零正整数:\n");
scanf("%d%d", &a, &b);
gcd_num = gcd(a, b);
lcm_num = lcm(a, b);
printf("%d和%d的最大公约数是%d,最小公倍数是%d\n", a, b, gcd_num, lcm_num);
return 0;
}
// 求最大公约数
int gcd(int a, int b) {
int t;
while (b != 0) {
t = b;
b = a % b;
a = t;
}
return a;
}
// 求最小公倍数
int lcm(int a, int b) {
int gcd_num = gcd(a, b);
return a * b / gcd_num;
}
```
在这个例子中,我们定义了两个函数:`gcd`和`lcm`。`gcd`函数使用辗转相除法来计算两个数的最大公约数,`lcm`函数利用最大公约数来计算两个数的最小公倍数。
在`main`函数中,我们首先要求用户输入两个非零正整数,并将它们作为参数传递给`gcd`和`lcm`函数。然后,我们将函数的返回值打印到屏幕上。
阅读全文