一道大学试题,有点强人所难了

#编写一个函数,从键盘上输入两个数,求最大公约数和最小公倍数,如果输入的第一个数小于第二个数时,需要交换 如:输入16,24调用函数显示8,48

m = int(input("请输入m的值:"))
n = int(input("请输入n的值:"))

# 默认m比n大,方便计算。
if m < n:
    t = m
    m = n
    n = t
# m与n成倍数的情况
if(m % n == 0):
    x = n
    y = m
# m与n不成倍数的情况
else:
    # 遍历求取最大公约数
    for i in range(1, n):
        if m%i==0 and n%i==0:
            x = i
    # 遍历求取最小公倍数
    y = m   # 从大的那个数开始遍历
    while True:
        if y%m == y%n ==0: 
            break
        y += 1
print("最大公因数为:{0},最小公倍数为:{1}".format(int(x),int(y)))
运行结果:
请输入m的值:12
请输入n的值:21
最大公因数为:3,最小公倍数为:84

 

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632