gcd

有序列表

1. LCM(a, b) = a / GCD(a, b) × b;//先除后乘 防止数字过大爆炸

2. 欧几里得cpp

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

3. 扩展欧几里得

void exgcd(LL a, LL b, LL &x, LL &y, LL &d){
    if (!b) {d = a, x = 1, y = 0;}
    else{
        exgcd(b, a % b, y, x, d);
        y -= x * (a / b);
    }
}

4. 线性模方程的解

 void mod_line(int a, int b, int n)
    {    
    //ax = b (mod n)
        int d, x, y, x0, i;
        exgcd(a, n, x, y,d);
        if(b%d == 0)
        {
            x0 = x * (b/d) % n + n;//x0为任意一个解
            for(i = 0;i < d;i ++)
               cout << (x0 + i*n/d) % n <<endl;//方程由d个解
        }
     }

猜你喜欢

转载自blog.csdn.net/qq_35160381/article/details/80219076
gcd