短除法求兩個數的最大公約數的python實現


方法

先用兩個數公有的質因數連續去除,一直除到所得的商是互質數為止

實現代碼

# -*- coding:utf-8 -*-


def division(a,b):
    """判定兩個數是否為互質數"""
    for i in range(2, min(a,b)+1):
        if a%i == 0 and b%i == 0:
            return False
    return True


def common_div(a, b):
    """獲得兩個數的公約數列表"""
    min_num = min(a,b)
    commons = [1,]
    for i in range(2,min_num+1):
        if a%i == 0 and b%i == 0:
            commons.append(i)
            a = a/i
            b = b/i
            if division(a,b):
                break
    return commons


def get_common_div(lis):
    """計算列表中元素的乘積"""
    s = 1
    for i in lis:
        s *= i
    return s


if __name__ == "__main__":
    print division(9,8)
    print get_common_div(common_div(100,80))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM