求2个数的最大公约数_辗转相除法

求 2个数的最大公约数

def divisor(m,n):
    a=max(m,n)
    b=min(m,n)
    if a%b==0:
        return b
    else:
        for i in range(b//2,0,-1):
            if m%i==0 and n%i==0:
                return i
print('100,30最大公约数:',divisor(100,30))
print('100,50最大公约数:',divisor(100,50))
print('100,17最大公约数:',divisor(100,17))
print('319,377最大公约数:',divisor(319,377))

#辗转相除法:
def divisor(m,n):
    while 1:
        a=max(m,n)
        b=min(m,n)
        if a%b==0:
            return b
        else:
            c=a%b
            m=c
            n=b
    
print('*'*20)
print('100,30最大公约数:',divisor(100,30))
print('100,50最大公约数:',divisor(100,50))
print('100,17最大公约数:',divisor(100,17))
print('319,377最大公约数:',divisor(319,377))

 

posted @ 2018-12-28 16:37  小金儿  阅读(293)  评论(0编辑  收藏  举报