美文网首页
最大公因数

最大公因数

作者: fufufufuli | 来源:发表于2020-04-29 21:12 被阅读0次
# 使用递归求两正整数的最大公因数
def gcd(a, b):
    # 当入参其中至少有一个不为正整数时抛出异常
    if a <= 0 or b <= 0:
        raise Exception("Illegal Argument Exception!", a, b)
    # 当数相等时最大公因数为任意一个数
    if a == b:
        return a
    # 逻辑与运算判断是否为奇数
    if a & 1:
        if b & 1:
            return a > b and gcd(a - b, b) or gcd(b - a, a)
        # 一奇一偶时,对偶数进行位运算 >>1等价于b/2
        return gcd(a, b >> 1)
    if b & 1:
        return gcd(a >> 1, b)
    # 当两偶时,同时进行位运算>>1,相当于提取公因数2
    # 然后进行位运算<<1 对结果乘以2的得到公因数
    return gcd(a >> 1, b >> 1) << 1

相关文章

  • 程序设计-求最大公因数

    程序设计-求最大公因数 本文使用欧几里得算法来求最大公因数。 最大公因数:能够同时整除两个整数的最大整数。 即,1...

  • 欧几里得算法——计算最大公因数

    计算最大公因数的欧几里得算法 最大公因数 最大公因数,也称最大公约数,指两个或多个整数共有约数中最大的一个。a,b...

  • GCD最大公因数

    GCD最大公因数

  • 【教学随笔】最大公因数

    教学过程 1.看到课题,有什么问题? 最大公因数怎么求? 公因数是什么? 最大公因数和因数有什么关系? 2.什么是...

  • 欧几里德算法

    需求: 计算最大公因数。两个整数德最大公因数(Gcd)是同时整除二者的最大整数。 算法通过连续计算余数直到余数是0...

  • C语言 | 求两个数的最大公因数和最大公倍数

    最大公因数采取“倒叙”的思路;最大公倍数采取“正叙”的思路。

  • 约分。

    约分想必大家肯定都会,程序很简单:1.找到分子与分母的最大公因数。2.将分子与分母同时除以分子与分母的最大公因数。...

  • 辗转相除法求最大公因数的原理

    辗转相除法求最大公因数的原理 一、辗转相除法可以求两个因数的最大公因数。(欧几里德算法) 1.我们可以用列举法、筛...

  • 最大公因数

  • 求最大公因数问题

    求最大公因数,就是找分子与分母中最小的那个数(本身可能是最大公因数),然后在取一个中间变量,不断接近最小数,看...

网友评论

      本文标题:最大公因数

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