输入两个正整数m和n,求其最大公约数和最小公倍数。Python
时间: 2024-11-27 14:21:51 浏览: 7
在Python中,我们可以使用欧几里得算法(Euclidean Algorithm)来计算两个正整数的最大公约数(GCD),然后利用这个GCD来找到它们的最小公倍数(LCM)。以下是相应的步骤:
1. **求最大公约数 (GCD)**:
```python
def gcd(m, n):
while n != 0:
m, n = n, m % n
return m
```
这个函数通过不断交换 `m` 和 `n` 的值,并取模,直到 `n` 变为 0,此时 `m` 就是最大公约数。
2. **求最小公倍数 (LCM)**:
最小公倍数等于两数之积除以他们的最大公约数。
```python
def lcm(m, n):
return abs(m * n) // gcd(m, n)
```
使用绝对值防止负数的情况,因为 LCM 总是非负的。
**综合代码示例**:
```python
def compute_gcd_lcm(m, n):
gcd_value = gcd(m, n)
lcm_value = lcm(m, n)
print(f"最大公约数 (GCD): {gcd_value}")
print(f"最小公倍数 (LCM): {lcm_value}")
# 测试输入
compute_gcd_lcm(48, 18)
```
运行这段代码,你可以得到给定 `m` 和 `n` 的最大公约数和最小公倍数。
相关问题
输入两个正整数m和n求其最大公约数和最小公倍数
最大公约数可以使用辗转相除法来求解,具体步骤如下:
1. 比较m和n的大小,将较小的数赋值给a,较大的数赋值给b。
2. 计算a和b的余数c,如果c等于0,则b就是最大公约数;否则,将b赋值给a,将c赋值给b,继续执行第2步,直到c等于0为止。
最小公倍数可以通过最大公约数来求解,公式为:
最小公倍数 = m * n / 最大公约数
下面是Python代码实现:
```python
m = int(input("请输入第一个数:"))
n = int(input("请输入第二个数:"))
# 计算最大公约数
a = min(m, n)
b = max(m, n)
while a != 0:
c = b % a
b = a
a = c
gcd = b
# 计算最小公倍数
lcm = m * n // gcd
print("最大公约数为:", gcd)
print("最小公倍数为:", lcm)
```
输入两个正整数m和n,求其最大公约数和最小公倍数python
以下是求两个正整数最大公约数和最小公倍数的Python程序:
```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)
# 输入两个正整数
num1, num2 = map(int, input("请输入两个正整数,并用逗号连接:").split(","))
# 输出最大公约数和最小公倍数
print("{}和{}的最大公约数是:{}".format(num1, num2, gcd(num1, num2)))
print("{}和{}的最小公倍数是:{}".format(num1, num2, lcm(num1, num2)))
```
阅读全文