分析
最大公约数
最大公约数借助于辗转相除法这样一个函数,Euclid(m,n)。
def Euclid(m,n):
while(m>0):
r=n%m
n=m
m=r
return n
最小公倍数
两数的乘积再除以两数的最大公约数法。
这个方法虽然比较复杂,但是使用范围很广。
因为两个数的乘积等于这两个数的最大公约数和最小公倍数的乘积。
例如:4和6的最大公约数是2,最小公倍数是12,那么,4×6=2×12
def least_common_multiple(m,n):
return m*n/Euclid(m,n)
题目
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
解法
def Euclid(m,n):
while(m>0):
r=n%m
n=m
m=r
return n
def least_common_multiple(m,n):
return int(m*n/Euclid(m,n))
m,n=map(int,input().split())
print("{} {}".format(Euclid(m,n),least_common_multiple(m,n)))