题解 | #最大公约数# 库函数实现方式

最大公约数

https://www.nowcoder.com/practice/cf4091ca75ca47958182dae85369c82c

官方库函数实现方式,与大家分享
class Solution {
private:
    int countr_zero(size_t x){
        int res = 0;
        while(x){
            if(x & 1 == 0) res ++;
            else break;
            x >>= 1;
        }
        return res;
    }
public:
    int gcd(int m, int n) {
        if (m == 0)
        return n;
        if (n == 0)
        return m;
        const int i = countr_zero(m);
        m >>= i;
        const int j = countr_zero(n);
        n >>= j;
        const int k = i < j ? i : j; // min(i, j)

        while (true)
        {
            if (m > n)
            {
                int tmp = m;
                m = n;
                n = tmp;
            }
            n -= m;
            if (n == 0)
            return m << k;
            n >>= countr_zero(n);
        }
    }
};

全部评论

相关推荐

投递字节跳动等公司10个岗位
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务