输入两个正整数m和n(1<m, n<1000000000),求其最大公约数和最小公倍数。有多行,每行2个正整数m和n。
时间: 2024-09-20 11:10:46 浏览: 87
输入两个正整数m和n求其最大公约数和最小公倍数 (2).pdf
求两个正整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM),可以利用欧几里得算法(Euclidean Algorithm)来计算GCD,并利用公式 `LCM(a, b) = |a * b| / GCD(a, b)` 来得到LCM。以下是算法的基本步骤:
1. **计算GCD**:对于任意两个正整数a和b(其中a > b),如果b为零,则GCD为a;否则,GCD等于b和a除以b的余数的GCD。
2. **计算LCM**:由于LCM乘以GCD总是等于两个数的乘积,我们可以直接通过a乘以b然后除以它们的GCD来得到LCM。
如果你需要编写程序来处理这个任务,下面是一个简单的Python示例:
```python
def gcd_and_lcm(m, n):
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
lcm = abs(m * n) // gcd(m, n)
return gcd(m, n), lcm
while True:
try:
m, n = map(int, input().split())
if m < 1 or n < 1 or m > 1000000000 or n > 1000000000:
print("输入无效,请重新输入")
continue
result_gcd, result_lcm = gcd_and_lcm(m, n)
print(f"最大公约数: {result_gcd}, 最小公倍数: {result_lcm}")
except ValueError:
break
```
阅读全文