用C语言编写程序:最大公约数与最小公倍数。题目内容:编写两个函数,分别求两个整数的最大公约数和最小公倍数,并用主函数调用这两个函数,然后输出结果。两个整数由键盘输入。约定最大公约数为正整数,两数里有负的则最小公倍数就为负的。 输入格式:输入均不为0的整数n和m(n与m的乘积还在整数范围内)(两数之间用英文,隔开) 输出格式:输出这两个整数的最大公约数和最小公倍数(两结果之间用英文,隔开) 输入样例:24,36 输出样例:12,72 输入样例:-48,128 输出样例:16,-384 时间限制:500ms内存限制:32000kb
时间: 2023-11-28 21:51:40 浏览: 198
以下是该程序的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 求两个数的最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 求两个数的最小公倍数
int lcm(int a, int b) {
return abs(a * b) / gcd(a, b);
}
int main() {
int n, m;
scanf("%d,%d", &n, &m);
int result1 = gcd(n, m);
int result2 = lcm(n, m);
printf("%d,%d", result1, result2);
return 0;
}
```
程序中定义了两个函数gcd和lcm分别计算最大公约数和最小公倍数。最大公约数的计算采用了递归的方式,最小公倍数的计算则利用了最大公约数的结果。在主函数中,首先从键盘输入两个整数n和m,然后调用gcd和lcm函数计算最大公约数和最小公倍数,最后输出结果。需要注意的是,当n和m中有一个为负数时,最小公倍数为负数,因此在计算最小公倍数时需要加上取绝对值的操作。
相关问题
c语言编写程序:实现两个正整数的最大公约数和最小公倍数,其中最大公约数和最小公倍数用自定义函数实现。
下面是一个使用 C 语言编写的程序,实现了两个正整数的最大公约数和最小公倍数的计算:
```c
#include <stdio.h>
int gcd(int a, int b);
int lcm(int a, int b);
int main() {
int a, b;
printf("请输入两个正整数:\n");
scanf("%d%d", &a, &b);
printf("它们的最大公约数为:%d\n", gcd(a, b));
printf("它们的最小公倍数为:%d\n", lcm(a, b));
return 0;
}
int gcd(int a, int b) {
int r;
while (b > 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
```
程序中定义了两个函数 `gcd` 和 `lcm`,分别用于计算最大公约数和最小公倍数。
`gcd` 函数使用了辗转相除法,即不断用较小的数去除较大的数,直到余数为 0 为止。最后剩下的较小的数就是两个数的最大公约数。
`lcm` 函数则直接利用最大公约数的定义,即两个数的积除以它们的最大公约数。
在 `main` 函数中,首先通过 `scanf` 函数获取用户输入的两个正整数,然后分别调用 `gcd` 和 `lcm` 函数计算它们的最大公约数和最小公倍数,并输出结果。
C语言编写:求最大公约数和最小公倍数
在C语言中,计算两个整数的最大公约数(GCD)和最小公倍数(LCM)可以使用欧几里得算法(辗转相除法)来实现最大公约数,然后根据公式 `LCM(a, b) = |a * b| / GCD(a, b)` 计算最小公倍数。以下是简单的函数实现:
```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 num1, num2;
printf("请输入两个整数:");
scanf("%d %d", &num1, &num2);
int result_gcd = gcd(num1, num2);
int result_lcm = lcm(num1, num2);
printf("最大公约数 (GCD) 是: %d\n", result_gcd);
printf("最小公倍数 (LCM) 是: %d\n", result_lcm);
return 0;
}
```
在这个程序中,用户输入两个整数,`gcd()` 函数递归地找出它们的最大公约数,而 `lcm()` 则利用这个结果计算最小公倍数。
阅读全文