python基础——求两个数的最大公因数和最小公倍数

        首先附上代码:

m = eval(input('请输入第一个数:'))
n = eval(input('请输入第二个数:'))
k = m
l = n
if m > n:
    while n != 0:
        a = m % n
        m = n #又以较小的数作为较大的数除于余数
        n = a
    b = (k * l) // m
    print('最大公约数%d\n最小公倍数%d'%(m,b))
else:
    while m != 0:
        a = n % m
        n = m
        m = a
    b = (k * l) // n
    print('最大公约数%d\n最小公倍数%d'%(n, b))

         整体的思路就是:用较大的数a去除于较小的数b,前提是两者都不为0,然后用所得余数c作为下一轮中较小的数,之前较小的数b作为除数,一直循环到作为被除数为0的时候,停止,返回较大的数此时较大的数即为最大公约数。最小公倍数为两数之积除于最大公约数。

        也许大家觉得有点麻烦,但是可以自己在草稿本上写一下进行验证。

        拿4和14来说,14>4,求余等于2,此时的2作为新的值赋在分母上,此时分子为4,求余等于0,循环结束,此时k=14,l=4,最小公倍数即为14*4/2=28,最大公约数即为2

        关于代码,第一行eval可以换成int或者float,但不可以为str。\n代表换行,输出可以使用format输出,或者按照上面代码的形式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值