最大公约数和最小公倍数问题【python实现】

问题描述

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

例:
输入第一个数字: 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值