同余

一、同余概念

  给定一个正整数m,如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m)。对模m同余是整数的一个等价关系。

二、同余性质

  1.自反性

    a≡a(mod m)

  2.对称性

    a≡b(mod m),则 b≡a(mod m)

  3.传递性

    a≡b(mod m) ,b≡c(mod m)

    则a≡c(mod m)

  4.同加性

    a≡b(mod m),则a+c≡b+c(mod m)

  5.同乘性

    1.a≡b(mod m),则a*c≡b*c(mod m)

    2.a≡b(mod m),c≡d(mod m)

    a*c≡b*d(mod m)

  6.同幂性

    a≡b(mod m)

    则power(a,n)≡power(b,n)≡(mod m)

  7.乘法模推论

    a*b mod k =

    (a mod k)*(b mod k) mod k

  8.结合模推论

    若 a mod p=x,a mod q=x

    p,q互质,则 a mod p*q=x

    证明

  • a=p*s+x,a=q*t+x => s*p=t*q;
  • 则一定有整数r,使得s=r*q (一个数相等,他们的质因子一定相等,又因为p,q互质,所以s含有q的所有质数积含有q,但又要等式相等,所以还要乘以r=t/p)
  • 所以 a=r*p*q+x, 得出a mod p*q=x

  9.没有同除性

三、同余应用

  快速幂

int a,b,c,ans=1;
int quick_pow()
{
    a=read(),b=read(),c=read();
    for(;b;b>>=1,a=a*a%c)
        if(b&1)
            ans=ans*a%c;
    printf("%d",ans);
    return 0;
}

原文地址:https://www.cnblogs.com/SeanOcean/p/11251324.html