GCD

最大公约数

① 标准

inline int gcd(int a, int b)
{
    int r;
    while (b > 0)
    {
        r = a % b;
        a = b;
        b = r;
    }
    return a;
}

② 位运算

inline int gcd(int a, int b) //a,b不能为0
{
    while (b ^= a ^= b ^= a %= b)
        ;
    return a;
}

③ 辗转相除法

inline int gcd(int a, int b)
{
    if (b == 0)
        return a;
    else
        return gcd(b, a % b);
}

④ 三目

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

⑤ 外挂(考试禁止)

#include <algorithm>
inline int gcd(int a, int b)
{
    return __gcd(a, b); //其实可以在主函数里直接用这个
}
原文地址:https://www.cnblogs.com/EdisonBa/p/14948647.html