📅  最后修改于: 2023-12-03 15:07:34.272000             🧑  作者: Mango
计算两个数的最大公约数和最小公倍数。
共两行,每行一个正整数。
输出两个数,第一个数为最大公约数,第二个数为最小公倍数。
6
9
3
18
先计算最大公约数,再用两个数相乘除以最大公约数得到最小公倍数。
具体计算最大公约数的方法可以用辗转相除法或辗转相减法,两种方法本质上是一样的,只不过运算的方式不同而已。
以下是用辗转相除法计算最大公约数的python实现:
a = int(input())
b = int(input())
while b:
a, b = b, a % b
gcd = a
lcm = (a * b) // gcd
print(gcd, lcm)
以下是用辗转相减法计算最大公约数的python实现:
a = int(input())
b = int(input())
while a != b:
if a > b:
a -= b
else:
b -= a
gcd = a
lcm = (a * b) // gcd
print(gcd, lcm)
注意,以上实现中最小公倍数的计算方法是 (a * b) // gcd
,而不是 a * b
。因为如果直接相乘再除以最大公约数,容易溢出,而 (a * b) // gcd
不会溢出。