给定2个正整数,求它们的最大公约数和最小公倍数,并输出。 输入格式: 输入有若干组。 每组数据,在一行中给出两个正整数M和N(≤1000),中间有1个空格。 输出格式: 对于每组输入,在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1个空格分隔。
时间: 2024-10-07 07:01:10 浏览: 63
Java求两个正整数的最大公约数和最小公倍数
5星 · 资源好评率100%
给定两个正整数 M 和 N,计算它们的最大公约数(GCD)和最小公倍数(LCM),可以通过欧几里得算法(也称辗转相除法)来找到 GCD,然后利用公式 GCD(M, N) * LCM(M, N) = |M| * |N| 计算 LCM。以下是步骤:
1. 如果 N 等于 0,那么 GCD 是 M,因为任何数和 0 的最大公约数都是该数本身。
2. 否则,GCD(M, N) = GCD(N, M % N)。
3. 最小公倍数可以通过 M 和 N 的乘积除以最大公约数得到:LCM(M, N) = (M * N) / GCD(M, N)。
对于每个输入对,你可以编写如下的 Python 代码片段来实现这个功能:
```python
def gcd(m, n):
while n != 0:
m, n = n, m % n
return m
def lcm(m, n):
return m * n // gcd(m, n)
# 示例输入
M, N = map(int, input().split())
# 计算并输出结果
print(gcd(M, N), lcm(M, N))
```
阅读全文