一、基本定义和定理
定义1: 给定正整数 m {m} m,若用两个整数 a {a} a和 b {b} b所得余数相同,称 a {a} a和 b {b} b所得余数相同,称 a {a} a和 b {b} b对模 m {m} m同余,记作 a ≡ b ( m o d ) m {a \equiv b (mod) m} a≡b(mod)m,并称该式子为同余式;否则称 a {a} a和 b {b} b对模 m {m} m不同余。
定义2: 整数的集合被分为 m {m} m个不同的集合,这些集合被称为模 m {m} m剩余类(同余类)。每个同余类中的任意两个整数都是模 m {m} m同余的。
定理1: a ≡ b ( m o d m ) {a \equiv b (mod\ m) } a≡b(mod m),当且仅当 m ∣ ( a − b ) {m | (a-b)} m∣(a−b)。
定理2: a ≡ b ( m o d m ) {a \equiv b (mod\ m) } a≡b(mod m),当且仅当存在整数 k {k} k,使得 a = b + k m {a = b + km} a=b+km
费马小定理: 若 p {p} p是质数,则对于任意整数 a {a} a,有 a p ≡ a ( m o d p ) {a^p\equiv a(mod \ p)} ap≡a(mod p)。
欧拉定理: 若正整数 a , n {a,n} a,n互质,则 a φ ( n ) ≡ 1 ( m o d n ) {a^{\varphi(n)}\equiv 1(mod\ \ n)} aφ(n)≡1(mod n),其中 φ ( n ) {\varphi(n)} φ(n)为欧拉函数。
欧拉定理的推论:
若正整数 a , n {a,n} a,n互质,则对于任意正整数 b {b} b,有 a b ≡ a b m o d φ ( n ) ( m o d n ) {a^b\equiv a^{b\ mod\ \varphi(n)}(mod\ n)} ab≡ab mod φ(n)(mod n)。
证明:
设 b = q × φ ( n ) + r {b = q\times \varphi(n) + r} b=q×φ(n)+r,其中 0 ≤ r < φ ( n ) {0\leq r < \varphi (n)} 0≤r<φ(n),即 r = b m o d φ ( n ) {r = b\ mod\ \varphi(n)} r=b mod φ(n)。于是: a b ≡ a q × φ ( n ) + r ≡ ( a q × φ ( n ) ) q × a r ≡ 1 q × a r ≡ a r ≡ a b m o d φ ( n ) ( m o d n ) {a^{b}\equiv a^{ q\times \varphi(n) + r} \equiv (a^{q \times\varphi(n)})^{q}\times a^r \equiv 1^q\times a^r \equiv a^r \equiv a^{b \ mod\ \varphi(n)}(mod\ n)} ab≡aq×φ(n)+r≡(aq×φ(n))q×ar≡1q×ar≡ar≡ab mod φ(n)(mod n)。
许多计数类的题目要求我们把答案对一个质数 p {p} p取模后输出,面对 a + b , a − b , a × b {a+b,a-b,a\times b } a+b,a−b,a×b这样的算,可以在计算前先把 a , b {a,b} a,b对 p {p} p取模。面对乘方算式,根据欧拉定义的推论,可以先把底数对 p {p} p取模、指数对 φ ( p ) {\varphi( p)} φ(p)取模,在计算乘方。
二、同余的性质
对于整数 a , b , c {a,b,c} a,b,c和自然数 m , n {m,n} m,n,对模 m {m} m同余满足:
- 自反性: a ≡ a ( m o d m ) {a \equiv a(mod\ m)} a≡a(mod m)。
- 对称性:若 a ≡ b ( m o d m ) {a \equiv b(mod\ m)} a≡b(mod m),则 b ≡ a ( m o d m ) {b \equiv a(mod\ m)} b≡a(mod m)。
- 传递性:若 a ≡ b ( m o d m ) {a \equiv b(mod\ m)} a≡b(mod m), b ≡ c ( m o d m ) {b \equiv c(mod\ m)} b≡c(mod m),则 a ≡ c ( m o d m ) {a \equiv c(mod\ m)} a≡c(mod m)。
- 同加性:若 a ≡ b ( m o d m ) {a \equiv b(mod\ m)} a≡b(mod m),则 a + c ≡ b + c ( m o d m ) {a +c\equiv b+c(mod\ m)} a+c≡b+c(mod m)。
- 同乘性:若 a ≡ b ( m o d m ) {a \equiv b(mod\ m)} a≡b(mod m),则 a c ≡ b c ( m o d m ) {ac \equiv bc(mod\ m)} ac≡bc(mod m)。
一般情况, a ≡ b ( m o d m ) {a \equiv b(mod\ m)} a≡b(mod m), c ≡ d ( m o d m ) {c \equiv d(mod\ m)} c≡d(mod m),则有 a c ≡ b d ( m o d m ) {ac \equiv bd(mod\ m)} ac≡bd(mod m) - 同幂性:若 a ≡ b ( m o d m ) {a \equiv b(mod\ m)} a≡b(mod m),则 a n ≡ b n ( m o d m ) {a^n\equiv b^n(mod\ m)} an≡bn(mod m)。
- 若 a m o d p = x , a m o d q = x {a\ mod \ p = x,a\ mod \ q = x} a mod p=x,a mod q=x,其中 p , q {p,q} p,q互质,则 a m o d ( p q ) = x {a \ mod\ (pq)=x} a mod (pq)=x
证明:
因为 a m o d p = x , a m o d q = x {a\ mod \ p = x,a\ mod \ q = x} a mod p=x,a mod q=x,则一定存在整数 s , t {s,t} s,t,使 a = s p + x , a = t q + x {a = sp + x,a = tq + x} a=sp+x,a=tq+x,所以 s p = t q {sp = tq} sp=tq,
又因为 p , q {p,q} p,q互质,肯定是 s {s} s和 p {p} p存在一个倍数的关系,则一定存在整数 r {r} r,使 s = r q {s = rq} s=rq,
将 s = r q {s = rq} s=rq带回到 a = s p + x {a = sp + x} a=sp+x得到 a = r p q + x {a = rpq+x} a=rpq+x,得出: a m o d ( p q ) = x {a\ mod(pq) = x} a mod(pq)=x。
三、扩展欧几里得算法
欧几里得算法: gcd(a,b) = gcd(b,a%b)。
定理1: 设 a , b {a,b} a,b不全为0,则存在整数 x {x} x和 y {y} y,使得 a x + b y = g c d ( a , b ) {ax+by} = gcd(a,b) ax+by=gcd(a,b)。
证明:
ll exgcd(ll a,ll b,ll &x,ll &y){
if(b == 0){
x = 1;
y = 0;
return a;
}
ll t = exgcd(b,a%b,x,y);
ll x0 = x,y0 = y;//x0 和 y0 是下一次 递归中 x 和 y 的解
x = y0;
y = x0 - a / b * y0;
return t;
}
注意一下此处递归边界的问题:
当到达递归边界的时候,b==0,a=gcd(a,b) 这时可以观察出来这个式子的一个解:a1+b0=gcd(a,b),故x=1,y=0。
定理2: 对于不定方程 a x + b y = c {ax+by = c} ax+by=c,当且仅当gcd(a,b)|c时,方程有解。
扩展欧几里得算法的作用:求解不定方程 a x + b y = g c d ( a , b ) {ax+by=gcd(a,b)} ax+by=gcd(a,b) 的一组特解 ( x ′ , y ′ ) {(x^{'},y^{ '})} (x′,y′)。
原理分析:
首先由定理2可知,当gcd(a,b)不整除c的时候是无解的。所以过程中gcd(a,b)都是可以整除c的
因为gcd(a,b)可以整除c,所以设
g = g c d ( a , b ) a ′ = a / g , b ′ = b / g , c ′ = c / g g = gcd(a,b)\ \ \ \ \ \ \ a^{'} = a/g,\ \ \ b^{'} = b/g,\ \ \ c^{'}=c/g g=gcd(a,b) a′=a/g, b′=b/g, c′=c/g
可以得到式子: a ′ x + b ′ y = c ′ {a^{'}x + b^{'}y = c^{'} } a′x+b′y=c′,这个式子中的 x , y {x,y} x,y就是原式的解。
我们可以用扩展欧几里得exgcd( a ′ , b ′ {a^{'},b^{'}} a′,b′)求出不定方程 a ′ x ′ + b ′ y ′ = 1 {a^{'}x^{'}+b^{'}y^{'} = 1} a′x′+b′y′=1的整数解。
因为 a ′ , b ′ {a^{'},b^{'}} a′,b′是互质的,所以gcd( a ′ , b ′ {a^{'},b^{'}} a′,b′) =1,故可以使用扩展欧几里得求出不定方程 a ′ x ′ + b ′ y ′ = 1 {a^{'}x^{'}+b^{'}y^{'} = 1} a′x′+b′y′=1的整数解。
那么 a ′ c ′ x ′ + b ′ c ′ y ′ = c ′ {a^{'}c^{'}x^{'}+b^{'}c^{'}y^{'} = c^{'}} a′c′x′+b′c′y′=c′
a ′ g c ′ x ′ + b ′ g c ′ y ′ = g c ′ {a^{'}gc^{'}x^{'}+b^{'}gc^{'}y^{'} = gc^{'}} a′gc