使用c语言求两个数中最大公约数和最小公倍数 输入在一行中给出两个正整数M和N(≤1000) 在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔
时间: 2024-06-16 09:04:20 浏览: 21
要使用C语言求两个数的最大公约数和最小公倍数,可以使用辗转相除法来实现。
首先,我们定义一个函数来计算两个数的最大公约数。辗转相除法的基本思想是,用较大的数除以较小的数,然后用余数替换较大的数,再用新的较大的数除以新的较小的数,如此循环,直到余数为0。此时,较小的数就是最大公约数。
接下来,我们定义一个函数来计算两个数的最小公倍数。最小公倍数可以通过两个数的乘积除以它们的最大公约数来计算得到。
下面是使用C语言实现的代码:
```c
#include <stdio.h>
// 计算最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 计算最小公倍数
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int main() {
int M, N;
scanf("%d %d", &M, &N);
int max_gcd = gcd(M, N);
int min_lcm = lcm(M, N);
printf("%d %d\n", max_gcd, min_lcm);
return 0;
}
```
输入示例:
```
12 18
```
输出示例:
```
6 36
```
相关问题
C语言实现求两数的最大公约数和最小公倍数 输入两个正整数m和n,求其最大公约数和最小公倍数
以下是两种C语言实现求两数的最大公约数和最小公倍数的方法:
1. 碾转相除法
```c
#include <stdio.h>
#include <math.h>
int main() {
int m, n, i, temp, temp1;
printf("输入两个整数以,隔开\n");
scanf("%d,%d", &m, &n);
temp1 = m * n; //两数的积
i = n;
if (n > m) { //判断大数做被除数
temp = m;
m = n;
n = temp;
}
while (n != 0) {
temp = m % n; //碾转相除法得最小公倍数
m = n;
n = temp;
}
printf("最小公倍数:%d\n", m);
printf("最大公约数:%d", temp1 / m);
return 0;
}
```
2. 分解质因数法
```c
#include <stdio.h>
#include <math.h>
int main() {
int m, n, s, i;
scanf("%d,%d", &m, &s);
printf("%d,%d 的最大公约数是:", m, s);
n = (m > s) ? s : m;
for (i = n; i > 0; i--) {
if ((m % i != 0) || (s % i != 0)) continue;
printf("%2d\n", i);
printf("最小公倍数%5d", m * s / i);
return 0;
}
return 0;
}
```
C语言中输入两个正整数m和n,求其最大公约数和最小公倍数
以下是C语言中求两个正整数m和n的最大公约数和最小公倍数的代码实现:
```c
#include <stdio.h>
int main() {
int m, n, max, min, b, c;
printf("请输入两个整数:\n");
scanf("%d%d", &m, &n);
c = m % n;
b = m * n;
while (c != 0) {
m = n;
n = c;
c = m % n;
}
max = n;
min = b / max;
printf("\n最大公约数为:%d\n最小公倍数为:%d\n", max, min);
return 0;
}
```
输入两个正整数m和n,程序会先计算它们的余数c,如果c等于0,则n即为最大公约数;否则,将m赋值为n,n赋值为c,再次计算余数,直到余数为0,此时n即为最大公约数。最小公倍数可以通过两数之积除以最大公约数得到。