输入描述:
每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)
输出描述:
对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。
提交了两段代码都提示运行超时(限时2s),应该是判断最大公约数部分的循环太浪费时间了,但是除了这样之外,以我目前的知识储备实在是想不出来了。
n,m=map(int,input().split())
ls=[]
if n%m==0:
a=m
b=n
else:
if n>m:
for i in range(1,m):
if n%i==0 and m%i==0:
ls.append(i)
else:
for i in range(1,n):
if n%i==0 and m%i==0:
ls.append(i)
a=max(ls)
b=int(n*m/a)
c=a+b
print(c)
n,m=map(int,input().split())
ls=[]
if n>m and n%m==0:
a=m
b=n
elif n<m and m%n==0:
a=n
b=m
elif n>m:
for i in range(1,m):
if n%i==0 and m%i==0:
ls.append(i)
a=max(ls)
b=int(n*m/a)
elif n<m:
for i in range(1,n):
if n%i==0 and m%i==0:
ls.append(i)
a=max(ls)
b=int(n*m/a)
elif m==n:
a=m
b=n
# print(a,b)
c=a+b
print(c)