快乐地打牢基础(7)——同余

一、基本定义和定理


定义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} ab(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) } ab(mod m),当且仅当 m ∣ ( a − b ) {m | (a-b)} m(ab)

定理2: a ≡ b ( m o d   m ) {a \equiv b (mod\ m) } ab(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)} apa(mod p)

欧拉定理: 若正整数 a , n {a,n} an互质,则 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} an互质,则对于任意正整数 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)} abab 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)} 0r<φ(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)} abaq×φ(n)+r(aq×φ(n))q×ar1q×ararab mod φ(n)(mod n)

许多计数类的题目要求我们把答案对一个质数 p {p} p取模后输出,面对 a + b , a − b , a × b {a+b,a-b,a\times b } a+b,ab,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)} aa(mod m)
  • 对称性:若 a ≡ b ( m o d   m ) {a \equiv b(mod\ m)} ab(mod m),则 b ≡ a ( m o d   m ) {b \equiv a(mod\ m)} ba(mod m)
  • 传递性:若 a ≡ b ( m o d   m ) {a \equiv b(mod\ m)} ab(mod m) b ≡ c ( m o d   m ) {b \equiv c(mod\ m)} bc(mod m),则 a ≡ c ( m o d   m ) {a \equiv c(mod\ m)} ac(mod m)
  • 同加性:若 a ≡ b ( m o d   m ) {a \equiv b(mod\ m)} ab(mod m),则 a + c ≡ b + c ( m o d   m ) {a +c\equiv b+c(mod\ m)} a+cb+c(mod m)
  • 同乘性:若 a ≡ b ( m o d   m ) {a \equiv b(mod\ m)} ab(mod m),则 a c ≡ b c ( m o d   m ) {ac \equiv bc(mod\ m)} acbc(mod m)
    一般情况, a ≡ b ( m o d   m ) {a \equiv b(mod\ m)} ab(mod m) c ≡ d ( m o d   m ) {c \equiv d(mod\ m)} cd(mod m),则有 a c ≡ b d ( m o d   m ) {ac \equiv bd(mod\ m)} acbd(mod m)
  • 同幂性:若 a ≡ b ( m o d   m ) {a \equiv b(mod\ m)} ab(mod m),则 a n ≡ b n ( m o d   m ) {a^n\equiv b^n(mod\ m)} anbn(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=xa 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=xa 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+xa=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^{'} } ax+by=c,这个式子中的 x , y {x,y} x,y就是原式的解。

我们可以用扩展欧几里得exgcd( a ′ , b ′ {a^{'},b^{'}} a,b)求出不定方程 a ′ x ′ + b ′ y ′ = 1 {a^{'}x^{'}+b^{'}y^{'} = 1} ax+by=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} ax+by=1的整数解。

那么 a ′ c ′ x ′ + b ′ c ′ y ′ = c ′ {a^{'}c^{'}x^{'}+b^{'}c^{'}y^{'} = c^{'}} acx+bcy=c

a ′ g c ′ x ′ + b ′ g c ′ y ′ = g c ′ {a^{'}gc^{'}x^{'}+b^{'}gc^{'}y^{'} = gc^{'}} agc

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值