输入两个正整数,求它们的最大公约数与最小公倍数。 输入 多组输入,第一行输入你下面输入的数想组数虽输入两个证整数,两个整数之问用空格分开。 数据保证在int范围内, 输出 第一行输出最大公约数 第二行输出最小公倍数 答案保证在Int 范围内
时间: 2024-11-03 17:23:44 浏览: 21
当你需要计算两个正整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM),可以采用欧几里得算法来找到最大公约数,然后利用公式 `LCM(a, b) = |a * b| / GCD(a, b)` 来计算最小公倍数。
以下是步骤:
1. **输入**:首先,读入两组正整数,例如 `n m`,它们用空格分隔。
2. **计算GCD**:对于每对输入的整数 `a` 和 `b`(在这个场景下就是输入的那两个数),应用辗转相除法(也称欧几里得算法)。每次取较大数除以较小数的余数,直到余数为0,此时的较小数即为最大公约数。
- 如果 `a % b == 0`,则 `b` 就是最大公约数。
- 否则,更新 `a` 为 `b`,`b` 为余数 `a % b`,继续循环。
3. **计算LCM**:一旦得到最大公约数,通过上面提到的公式计算最小公倍数。例如,如果 `gcd = GCD(a, b)`,那么 `lcm = a * b / gcd`。
4. **输出**:将最大公约数打印到一行,然后将计算出的小公倍数打印到下一行。
如果你需要编写具体的程序代码来处理这个问题,它可能会看起来像这样(这里假设是Python):
```python
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
def lcm(a, b):
return abs(a * b) // gcd(a, b)
# 示例:
t = int(input()) # 组数
for _ in range(t):
a, b = map(int, input().split())
print(gcd(a, b))
print(lcm(a, b))
```
阅读全文