求最大公约数-欧几里得定理

欧几里得定理简单表述为:

求两个数a,b的最大公约数

假设a<b  求 a和b 的最大公约数就是求  b和a%b 的最大公约数

特殊的,当a,b中有一个为0时,比如0,15,其最大公约数为15  可以理解为15可以整除15,0也可以整除15,所以0也是15的倍数

参考链接:欧几里得证明+最大公约数

 

接下来看一下代码实现

  //以下两种情况都是假定a<b,不过实际传进来的a,b大小对结果无影响

  int gcd(int a, int b)
    {
        return (a == 0) ? b : gcd(b % a, a);
    }

    //非递归,较多计算时耗时比上面略好
    int gcd1(int a, int b)
    {
        while (a)
        {
            int t = b % a;
            b = a;
            a = t;
        }
        return b;
    }

 

posted @ 2022-03-18 20:27  深情的山鸡  阅读(264)  评论(0编辑  收藏  举报