题目
描述
话说张无忌这天无意中翻看了《世界数学奥林匹克解题大辞典-数论卷》,看到了最大公约数和最小公倍数的解法,内功深厚的他瞬间发现了二者之间的关联,现在他来考你计算两个数的最大公约数和最小公倍数的乘积,你能通过考验吗?
输入
一行两个数 a 和 b,题目保证 a 和 b 在 64 位整型
输出
这两个数的最大公约数和最小公倍数乘积,题目保证输出结果在 64 整型范围内。
样例输入
2 6
样例输出
12
提示
2 和 6 的最小公倍数为 6 ,最大公约数为 2 所以答案为 12.
思路:
最小公倍数求法:
最小公倍数=两个数乘积/最大公约数
求最大公约数求法:
- 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B
- 如果C等于0,则C就是整数A和整数B的最大公约数
- 如果C不等于0, 将B赋值给A, 将C赋值给B ,然后进行 1, 2 两步,直到余数为0, 则可以得知最大公约数
def fun(num1, num2):
if num1 < num2:
num1, num2 = num2, num1
vari1 = num1 * num2
vari2 = num1 % num2
while vari2 != 0:
num1 = num2
num2 = vari2
vari2 = num1 % num2
vari1 /= num2
print(int(num2*vari1))
l=[int(x) for x in input().split()]
fun(l[0], l[1])