问题描述
要求求出两个给定正整数的最大公约数和最小公倍数。
例:
输入第一个数字: 100
输入第二个数字: 1520
最大公约数为 20 最小公倍数为 7600
实现方式
最大公约数最大不会超过两数中的较小数,先比较两数大小,遍历较小数,若是公约数则更新公约数变量,遍历完成,变量中存储的就是最大公约数。
最小公倍数能同时整除两个数,且大于等于较大数,比较两数大小,从较大数累加找同时能整除两数的数为最小公倍数。
def greatestComDiv(x, y):
if x > y:
smaller = y
else:
smaller = x
for i in range(1, smaller + 1):
if (x % i == 0) and (y % i == 0):
greatestComDiv = i
return greatestComDiv
def LeastestComMul(x, y):
if x > y:
greater = x
else:
greater = y
while True:
if (greater % x == 0) and (greater % y == 0):
LeastestComMul = greater
break
greater += 1
return LeastestComMul
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
print("最大公约数为", greatestComDiv(num1, num2),"最小公倍数为", LeastestComMul(num1, num2))
result
输入第一个数字: 145
输入第二个数字: 233
最大公约数为 1 最小公倍数为 33785
Process finished with exit code 0