输入两个正整数mn求他们的最大公因数
时间: 2023-11-03 21:06:02 浏览: 137
可以使用辗转相除法求两个正整数的最大公因数。
具体步骤如下:
1. 用较大的数除以较小的数,得到余数和商。
2. 若余数为0,则较小的数即为最大公因数。
3. 若余数不为0,则用较小的数除以余数,得到新的余数和商。
4. 重复上述步骤,直到余数为0。
最后一次除法的除数就是最大公因数。
下面是一个求最大公因数的 Python 代码实现:
```python
def gcd(m, n):
if m < n:
m, n = n, m # 交换m和n,使得m >= n
while n != 0:
r = m % n
m = n
n = r
return m
```
在这个代码中,我们先判断m和n的大小关系,确保m大于等于n。然后使用while循环进行辗转相除,直到n等于0为止。最后返回最大公因数m。
相关问题
c语言输入两个正整数mn,求最大公约数和最小公倍数
在C语言中,计算两个正整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)通常涉及到欧几里得算法(Euclidean Algorithm)用于找到GCD,然后利用公式 `LCM(a, b) = |a * b| / GCD(a, b)` 来计算LCM。
下面是一个简单的步骤说明:
1. **求最大公约数** (GCD):
- 使用辗转相除法(也称欧几里得算法),即对于两个数 a 和 b,如果 b 不为零,则它们的最大公约数等于 b 和 a mod b 的最大公约数。这个过程会一直持续到余数为零,此时的b就是最大公约数。
```c
int gcd(int m, int n) {
if (n == 0)
return m;
else
return gcd(n, m % n);
}
```
2. **求最小公倍数** (LCM):
- 计算两个数的乘积,然后除以它们的最大公约数。
```c
int lcm(int m, int n) {
return (m * n) / gcd(m, n);
}
```
你可以将这两个函数结合起来,先计算GCD,再计算LCM。
```c
#include <stdio.h>
// 定义 GCD 函数
int gcd(int a, int b);
int main() {
int m, n;
printf("请输入两个正整数mn:");
scanf("%d%d", &m, &n);
// 计算并打印 GCD 和 LCM
int result_gcd = gcd(m, n);
int result_lcm = lcm(m, n);
printf("最大公约数(GCD): %d\n", result_gcd);
printf("最小公倍数(LCM): %d\n", result_lcm);
return 0;
}
// 完整的 GCD 函数实现
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
```
写一段代码求出两个正整数mn求其最大公约数和最小公倍数
当然,我可以为您提供这段代码:
```python
def gcd(a, b):
# 求最大公约数
if b == 0:
return a
return gcd(b, a % b)
def lcm(a, b):
# 求最小公倍数
return a * b // gcd(a, b)
```
您可以调用这两个函数来求出任意两个正整数的最大公约数和最小公倍数。 例如:
```python
a = 12
b = 18
print("最大公约数:", gcd(a, b))
print("最小公倍数:", lcm(a, b))
```
输出结果为:
```
最大公约数: 6
最小公倍数: 36
```
希望这段代码可以帮助您解决问题。
阅读全文