输入两个正整数m和n,求其最大公约数和最小公倍数,用c语言写出这段代码
时间: 2023-06-08 12:04:46 浏览: 130
以下是通过 C 语言编写的求最大公约数和最小公倍数的代码:
#include <stdio.h>
int main() {
int m, n, gcd, lcm, a, b, temp;
printf("请输入两个正整数m和n:\n");
scanf("%d %d", &m, &n);
a = m;
b = n;
while (b != 0) {
temp = b;
b = a % b;
a = temp;
}
gcd = a;
lcm = m * n / gcd;
printf("最大公约数为:%d,最小公倍数为:%d\n", gcd, lcm);
return 0;
}
进一步说明:
以上代码可以通过辗转相除法(欧几里得算法)求解最大公约数,然后通过两个数的乘积除以最大公约数求得最小公倍数。在代码中,先输入两个数,然后通过 while 循环将两个数依次赋值给 a 和 b,直到 b 为 0,此时 a 就是它们的最大公约数。求出最大公约数后,将两个数的乘积除以最大公约数即可得到最小公倍数。
相关问题
输入两个正整数m和n求其最大公约数和最小公倍数c语言
### 回答1:
您好!以下是求最大公约数和最小公倍数的C语言代码:
```c
#include <stdio.h>
// 求最大公约数
int gcd(int m, int n) {
int r;
while (n != ) {
r = m % n;
m = n;
n = r;
}
return m;
}
// 求最小公倍数
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);
printf("它们的最大公约数为:%d\n", gcd(m, n));
printf("它们的最小公倍数为:%d\n", lcm(m, n));
return ;
}
```
希望能对您有所帮助!
### 回答2:
C语言是一种广泛应用于计算机科学中的编程语言,并且可以用来求两个正整数m和n的最大公约数和最小公倍数。求解最大公约数和最小公倍数的算法非常重要,因为这些概念在数学、计算机科学、物理学等学科中都有广泛的应用。
最大公约数(GCD)是能够同时整除两个数字的最大正整数,而最小公倍数(LCM)是能够被两个数字同时整除的最小正整数。我们可以通过辗转相除法来求解两个数字的最大公约数,使用最大公约数就可以求出最小公倍数。以下是本题的具体解法:
1. 最大公约数(GCD)的求解
为了找到m和n的最大公约数,我们可以使用辗转相除法。我们可以在迭代过程中利用除余运算,不断更新m和n的值,直到余数为0。这里是求最大公约数的C代码实现:
int gcd(int m, int n) {
int remainder;
while (n != 0) {
remainder = m % n;
m = n;
n = remainder;
}
return m;
}
2. 最小公倍数(LCM)的求解
我们可以使用m和n的最小公倍数来确定两个数字的LCM,公式如下:
LCM = (m * n) / GCD(m, n)
这里是求最小公倍数的C代码实现:
int lcm(int m, int n) {
int gcdValue = gcd(m, n);
int lcmValue = (m * n) / gcdValue;
return lcmValue;
}
综上所述,我们可以使用C语言轻松地求解两个正整数m和n的最大公约数和最小公倍数。
### 回答3:
最大公约数和最小公倍数是数学中常见的概念,对于两个正整数m和n,它们的最大公约数是能够整除m和n的最大正整数,而最小公倍数则是能够同时被m和n整除的最小正整数。这两个概念在c语言中可以通过编写简单的程序来实现。
首先,我们来考虑求最大公约数的方法。一个常见的思路是利用辗转相除法,即不断用较小数去除以较大数的余数,直到余数为0时,较大数即为最大公约数。这一思路可以通过以下c语言程序实现:
```
#include <stdio.h>
int main()
{
int m, n, temp;
printf("请输入两个正整数:\n");
scanf("%d %d", &m, &n);
// 辗转相除法
while (n != 0) {
temp = m % n;
m = n;
n = temp;
}
printf("最大公约数为:%d\n", m);
return 0;
}
```
这个程序首先让用户输入两个正整数m和n,然后利用while循环进行辗转相除的计算,直到n为0时,m就是最大公约数。最后,程序输出最大公约数的值。
接下来,我们考虑求最小公倍数的方法。一个比较直观的思路是先求出最大公约数,然后利用m和n的积除以最大公约数得到最小公倍数。这一思路可以通过以下c语言程序实现:
```
#include <stdio.h>
int main()
{
int m, n, temp, gcd, lcm;
printf("请输入两个正整数:\n");
scanf("%d %d", &m, &n);
// 辗转相除法求最大公约数
while (n != 0) {
temp = m % n;
m = n;
n = temp;
}
gcd = m;
lcm = m * n / gcd;
printf("最大公约数为:%d\n", gcd);
printf("最小公倍数为:%d\n", lcm);
return 0;
}
```
这个程序首先也是让用户输入两个正整数m和n,然后利用while循环进行辗转相除的计算,得到最大公约数gcd。接着,程序通过公式lcm = m * n / gcd计算最小公倍数lcm,并输出最大公约数和最小公倍数的值。
总之,通过编写上述两个程序,我们可以在c语言中实现求最大公约数和最小公倍数的功能,可以在实际程序中得到广泛的应用。
用C语言输入两个正整数m和n 求其最大公约数和最小公倍数
您好,以下是您所需的C语言代码:
#include <stdio.h>
int main() {
int m, n, i, gcd, lcm;
printf("请输入两个正整数m和n:\n");
scanf("%d %d", &m, &n);
for (i = 1; i <= m && i <= n; ++i) {
// 判断i是否为m和n的公约数
if (m % i == 0 && n % i == 0) {
gcd = i;
}
}
lcm = m * n / gcd;
printf("最大公约数为:%d\n", gcd);
printf("最小公倍数为:%d\n", lcm);
return 0;
}
如果您有其它问题,请继续提问。
阅读全文