本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
输出样例:
73 2044
非递归版
1 # 最大公约数和最小公倍数-非递归版
2 # Author: cnRick
3 # Time : 2020-3-29
4 def getGcd(a,b):
5 r = a % b # 初始化余数
6 while r > 0:
7 a,b = b,r
8 r = a % b
9 return b
10 a,b = map(int,input().split())
11 gcd = getGcd(a,b) # 计算最大公约数
12 lcm = a * b // gcd #计算最小公倍数 = 两个整数的乘积 / 最大公约数
13 print(gcd,lcm)
递归版
1 # 最大公约数和最小公倍数-递归版
2 # Author: cnRick
3 # Time : 2020-3-29
4 def getGcd(a,b): #递归实现求最大公约数
5 if(a % b == 0):
6 return b
7 else:
8 return getGcd(b,a % b)
9 a,b = map(int,input().split())
10 gcd = getGcd(a,b) # 计算最大公约数
11 lcm = a * b // gcd #计算最小公倍数 = 两个整数的乘积 / 最大公约数
12 print(gcd,lcm)