描述:
我们经常遇到的问题是给你两个数,要你求最大公约数和最小公倍数。
今天我们反其道而行之,给你两个数a和b,计算出它们分别是哪两个数的最大公约数和最小公倍数。输出这两个数,小的在前,大的在后,以空格隔开。若有多组解,输出它们之和最小的那组。
注:所给数据都有解,不用考虑无解的情况。
def num(m,n):
l=[]
a = 0
b = 0
if m>n:
m,n = n,m
for i in range(m+1,n):
if i%m==0 and n%i==0:
l.append(i)
if len(l)==2:
print l[0],l[1]
else:
min=10000000
for i in range(0,len(l)/2):
number = m*n/l[i]
if number in l and number+l[i]<min:
min = number+l[i]
a,b = l[i],number
print a,b
num(a,b)