计算最小公约数的几种方法

1,穷举法:判断两数大小,i 从[smaller,1]循环,当i同时可以被两数除尽时,循环停止返回i,i就是两数的最大公约数  如代码中的方法f1(),

2.辗转相除法:判断两数大小.,用较大的数除以较小的数,第一次时若能除尽,返回较小的数,否则,把较小的数的值赋给较大的数.把余数的值赋给较小的数,继续相除,如此循环,直至可以除尽为止,返回较大的数f4()

3.相减法:判断两数大小.,用较大的减较小的数,第一次时若差为0,返回较小的数,否则,把较小的数的值赋给较大的数.把差的值赋给较小的数,继续相减,如此循环,直至差为0为止,返回较大的数f3()

 

def f1(x, y):
    global result
    if x > y:
        smaller = y
    else:
        smaller = x
    for i in range(1, smaller+1 )[::-1]:
        if x % i == 0 and y % i == 0:
            result = i
            break

    return result
def f2(x,y):
    if x>y:
        bigger = x
        smaller=y
    else :
        bigger = y
        smaller = x
    r = 1
    while(r!=0):
        r = bigger - smaller
        bigger = smaller
        smaller = r
    return bigger

def f3(x,y):
    if x>y:
        bigger = x
        smaller=y
    else :
        bigger = y
        smaller = x
    r = 1
    while(r!=0):
        r = bigger %smaller
        bigger = smaller
        smaller = r
    return bigger

x = int(input("输入第一个数字: "))
y = int(input("输入第二个数字: "))
print(x, "和", y, "的最大公约数为", f1(x, y),f2(x, y),f3(x,y))





你可能感兴趣的:(计算最小公约数的几种方法)