首页 > 试题广场 >

小乐乐与欧几里得

[编程题]小乐乐与欧几里得
  • 热度指数:69384 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。


输入描述:

每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)



输出描述:
对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。
示例1

输入

10 20

输出

30
示例2

输入

15 20

输出

65
def gcd(a, b):
    while b!= 0:
        a, b = b, a % b
    return a

def lcm(a, b):
    return a * b // gcd(a, b)

while True:
    try:
        n,m = map(int,input().split())
        c=gcd(n, m)
        d=lcm(n, m)
        print(c+d)
    except:
        break
发表于 2024-09-10 18:33:07 回复(0)
使用math
import math

a,b=map(int,input().split())
gcd=math.gcd(a,b)
lcm=math.lcm(a,b)
print(int(gcd)+int(lcm))


发表于 2024-02-04 13:01:28 回复(0)
n, m = map(int,input().split())
ma = max(n, m)
mi = min(n, m)
r = ma % mi
while r != 0:
    ma = mi
    mi = r
    r = ma % mi
print(int(mi + n*m//mi))

发表于 2021-09-01 09:46:21 回复(1)