第4章-10.最大公约数和最小公倍数 (15分)

本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:

输入在一行中给出两个正整数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)

 

posted @ 2020-03-29 15:06  cnRicky  阅读(699)  评论(0编辑  收藏  举报