美文网首页【python程序员面试宝典|程序员算法宝典】
【python】使用二进制求解最大公约数?

【python】使用二进制求解最大公约数?

作者: 阿牛02 | 来源:发表于2019-07-24 16:40 被阅读0次

    题目:两个整数x,y,它们的最大公约数d必须满足d|x,而且d|y。其中符号“|”表示整除,d|x表示x是d的倍数,或者说x能够整除d。要求设计一个算法来计算最大公约数,算法不能使用乘法,除法和求余运算。

    分析:假设有两个整数a,b,其中a>b,求它们的最大公约数。先求两数相除后的余数,于是先对a,b进行求余运算。假设他们相除后余数是d,即d = a % b,那么a,b的最大公约数就等于b,d的最大公约数。

    code:

    def gcd(a, b):

        if a % b == 0:

            return b

        d = a % b

        return gcd(b, d)

    a = 128

    b = 48

    print("the greatest common divisor of {0} and {1} is :{2}".format(a, b, gcd(a, b)))

    程序运行结果:

    the greatest common divisor of 128 and 48 is :16

    相关文章

      网友评论

        本文标题:【python】使用二进制求解最大公约数?

        本文链接:https://www.haomeiwen.com/subject/wyczlctx.html