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输出,或者按照上面代码的形式

猜你喜欢

转载自blog.csdn.net/qq_60471758/article/details/121189892
今日推荐