输入两个正整数m和n,求其最大公约数和最小公倍数。 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35
时间: 2023-11-03 22:01:06 浏览: 71
这道题可以使用辗转相除法求解最大公约数,最小公倍数可以通过最大公约数和两个数的乘积求解。
以下是 Python 代码实现:
```python
m, n = map(int, input().split())
# 辗转相除法求最大公约数
a, b = m, n
while b != 0:
a, b = b, a % b
# 求最小公倍数
lcm = m * n // a
print(a, lcm)
```
输入样例:5 7
输出样例:1 35
相关问题
C++输入两个正整数m和n求其最大公约数和最小公倍数
以下是C++代码:
```
#include <iostream>
using namespace std;
int gcd(int m, int n) {
if(n == 0) return m;
return gcd(n, m % n);
}
int lcm(int m, int n) {
return m / gcd(m, n) * n;
}
int main() {
int m, n;
cout << "请输入两个正整数m和n:" << endl;
cin >> m >> n;
cout << "最大公约数为:" << gcd(m, n) << endl;
cout << "最小公倍数为:" << lcm(m, n) << endl;
return 0;
}
```
首先定义了 `gcd` 函数来计算最大公约数,使用递归的方式实现辗转相除法。然后定义 `lcm` 函数来计算最小公倍数,直接使用公式:两数之积等于它们的最大公约数和最小公倍数的乘积。最后在 `main` 函数中读入两个正整数,分别输出最大公约数和最小公倍数即可。
输入两个正整数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语言中实现求最大公约数和最小公倍数的功能,可以在实际程序中得到广泛的应用。
阅读全文