短除法求两个数的最大公约数的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