输入两个正整数mn,求求最大公约数和最小公倍数
时间: 2023-11-04 07:05:39 浏览: 219
输入两个正整数m和n,可以通过以下步骤求得它们的最大公约数和最小公倍数:
1. 从m和n中较小的数开始,从该数到1依次判断是否同时能被m和n整除,找到第一个能被整除的数即为它们的最大公约数。
2. 最小公倍数等于两数之积除以它们的最大公约数。
以下是代码实现:
```python
# 最大公约数
def gcd(m, n):
if m < n:
m, n = n, m
while n != 0:
m, n = n, m % n
return m
# 最小公倍数
def lcm(m, n):
return m * n // gcd(m, n)
m = int(input("请输入第一个正整数:"))
n = int(input("请输入第二个正整数:"))
print("它们的最大公约数为:", gcd(m, n))
print("它们的最小公倍数为:", lcm(m, n))
```
相关问题
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
```
希望这段代码可以帮助您解决问题。
阅读全文