LaTeX \LaTeX LATEX 太那啥了啊(又悲又恼
如有错误或 LaTeX \LaTeX LATEX 不规范的地方,请在评论区指出
1. 整除
1.1. 定义
设 a , b ∈ Z , a ≠ 0 a,b\in \mathbb{Z},a\ne0 a,b∈Z,a=0 ,如果 ∃ q \exists\ q ∃ q ,使 a q = b aq=b aq=b ,则 b b b 能被 a a a 整除,记作 a ∣ b a\mid b a∣b ,否则, b b b 不能被 a a a 整除,记作 a ∤ b a\nmid b a∤b
1.2. 性质
1.2.1. 性质1
若 a ∣ b , b ∣ c a\mid b,b\mid c a∣b,b∣c ,则 a ∣ c a\mid c a∣c
证明:
∵ a ∣ b , b ∣ c 令 a x = b , b y = c ( x , y ∈ Z , x ≠ 0 , y ≠ 0 ) ∴ a x y = c ∵ x , y ∈ Z ∴ x y ∈ Z ∴ a ∣ c \begin{aligned}\because&\ a\mid b,b\mid c\\&\text{令}ax=b,by=c(x,y\in \mathbb{Z},x\ne0,y\ne0)\\\therefore&\ axy=c\\\because&\ x,y\in\mathbb{Z}\\\therefore&\ xy\in\mathbb{Z}\\\therefore&\ a\mid c\end{aligned} ∵∴∵∴∴ a∣b,b∣c令ax=b,by=c(x,y∈Z,x=0,y=0) axy=c x,y∈Z xy∈Z a∣c
1.2.2. 性质2
若 a ∣ b , a ∣ c a\mid b,a\mid c a∣b,a∣c ,则有 ∀ x , y ∈ Z \forall\ x,y\in\mathbb{Z} ∀ x,y∈Z ,满足 a ∣ ( b x + c y ) a\mid(bx+cy) a∣(bx+cy)
证明:
∵ a ∣ b , a ∣ c 令 a x 1 = b , a y 1 = c ( x 1 , y 1 ∈ Z , x 1 ≠ 0 , y 1 ≠ 0 ) b x + c y = a x 1 x + a y 1 y = a ( x 1 x + y 1 y ) ∵ a ∣ a ( x 1 x + y 1 y ) ∴ a ∣ ( b x + c y ) \begin{aligned}\because&\ a\mid b,a\mid c\\&\text{令}ax_1=b,ay_1=c(x_1,y_1\in\mathbb{Z},x_1\ne0,y_1\ne0)\\ &\begin{aligned}bx+cy&=ax_1x+ay_1y\\&=a(x_1x+y_1y)\end{aligned}\\\because&\ a\mid a(x_1x+y_1y)\\\therefore&\ a\mid(bx+cy)\end{aligned} ∵∵∴ a∣b,a∣c令ax1=b,ay1=c(x1,y1∈Z,x1=0,y1=0)bx+cy=ax1x+ay1y=a(x1x+y1y) a∣a(x1x+y1y) a∣(bx+cy)
1.2.3. 性质3
若 a ∣ b a\mid b a∣b ,则 a m ∣ b m ( m ≠ 0 ) am\mid bm(m\ne0) am∣bm(m=0)
证明:
∵ a ∣ b 令 a x = b ( x ∈ Z , x ≠ 0 ) ∴ a m x = b m ∴ a m ∣ b m \begin{aligned}\because&\ a\mid b\\&\text{令}ax=b(x\in\mathbb{Z},x\ne0)\\\therefore&\ amx=bm\\\therefore&\ am\mid bm\end{aligned} ∵∴∴ a∣b令ax=b(x∈Z,x=0) amx=bm am∣bm
1.2.4. 性质4
若 ∀ x , y ∈ Z \forall\ x,y\in\mathbb{Z} ∀ x,y∈Z 满足 a x + b y = 1 ax+by=1 ax+by=1 ,且 a ∣ n , b ∣ n a\mid n,b\mid n a∣n,b∣n ,则 a b ∣ n ab\mid n ab∣n
证明:
∵ a ∣ n , b ∣ n 令 a x 1 = n , b y 1 = n ( x 1 , y 1 ∈ Z , x 1 , y 1 ≠ 0 ) a x + b y = 1 x b + y a = 1 a b x n b + y n a = n a b b y 1 x b + a x 1 y a = n a b x y 1 + x 1 y = n a b ∵ x , y , x 1 , y 1 ∈ Z ∴ x y 1 + x 1 y ∈ Z ∴ n a b ∈ Z ∴ a b ∣ n \begin{aligned}\because&\ a\mid n,b\mid n\\&\text{令}ax_1=n,by_1=n(x_1,y_1\in\mathbb{Z},x_1,y_1\ne0)\\&\begin{aligned}ax+by&=1\\\dfrac{x}{b}+\dfrac{y}{a}&=\dfrac{1}{ab}\\\dfrac{xn}{b}+\dfrac{yn}{a}&=\dfrac{n}{ab}\\\dfrac{by_1x}{b}+\dfrac{ax_1y}{a}&=\dfrac{n}{ab}\\xy_1+x_1y&=\dfrac{n}{ab}\end{aligned}\\\because&\ x,y,x_1,y_1\in\mathbb{Z}\\\therefore&\ xy_1+x_1y\in\mathbb{Z}\\\therefore&\ \dfrac{n}{ab}\in\mathbb{Z}\\\therefore&\ ab\mid n\end{aligned} ∵∵∴∴∴ a∣n,b∣n令ax1=n,by1=n(x1,y1∈Z,x1,y1=0)ax+bybx+aybxn+aynbby1x+aax1yxy1+x1y=1=ab1=abn=abn=abn x,y,x1,y1∈Z xy1+x1y∈Z abn∈Z ab∣n
1.2.5. 性质5
若 b = d q + c , q ∈ Z b=dq+c,q\in\mathbb{Z} b=dq+c,q∈Z ,那么 d ∣ b d\mid b d∣b 的充要条件为 d ∣ c d\mid c d∣c
证明1(若 d ∣ b d\mid b d∣b ,则 d ∣ c d\mid c d∣c):
∵ d ∣ b 令 d k = b ( k ∈ Z , k ≠ 0 ) ∴ b = d q + c ⟺ d k = d q + c ∴ d ∣ c \begin{aligned}\because&\ d\mid b\\&\text{令}dk=b(k\in\mathbb{Z},k\ne0)\\\therefore&\ b=dq+c\Longleftrightarrow dk=dq+c\\\therefore&\ d\mid c\end{aligned} ∵∴∴ d∣b令dk=b(k∈Z,k=0) b=dq+c⟺dk=dq+c d∣c
证明2(若 d ∣ c d\mid c d∣c ,则 d ∣ b d\mid b d∣b):
∵ d ∣ c 令 d k = c ( k ∈ Z , k ≠ 0 ) ∴ b = d q + c ⟺ b = d ( p + k ) ∴ d ∣ b \begin{aligned}\because&\ d\mid c\\&\text{令}dk=c(k\in\mathbb{Z},k\ne0)\\\therefore&\ b=dq+c\Longleftrightarrow b=d(p+k)\\\therefore&\ d\mid b\end{aligned} ∵∴∴ d∣c令dk=c(k∈Z,k=0) b=dq+c⟺b=d(p+k) d∣b
2. 模运算
2.1. 定义
定义:有 ∀ a , b ∈ Z , b ≠ 0 \forall\ a,b\in\mathbb{Z},b\ne0 ∀ a,b∈Z,b=0 ,求 a ÷ b a\div b a÷b 的余数,称 a a a 模 b b b ,记作 a m o d b a\bmod b amodb
2.2. 性质
2.2.1. 性质1
( a + b ) m o d c = ( a m o d c + b m o d c ) m o d c (a+b)\bmod c=(a\bmod c+b\bmod c)\bmod c (a+b)modc=(amodc+bmodc)modc
2.2.2. 性质2
( a − b ) m o d c = ( a m o d c − b m o d c ) m o d c (a-b)\bmod c=(a\bmod c-b\bmod c)\bmod c (a−b)modc=(amodc−bmodc)modc
2.2.3. 性质3
( a b ) m o d c = [ ( a m o d c ) × ( b m o d c ) ] m o d c (ab)\bmod c=[\ (a\bmod c)\times(b\bmod c)\ ]\bmod c (ab)modc=[ (amodc)×(bmodc) ]modc
证明:
设 a m o d c = m a , b m o d c = m b ( m a , m b ∈ Z ) ∵ a m o d c = m a , b m o d c = m b 令 a = m a + x s a , b = m b + c s b ( s a , s b ∈ Z ) ( a b ) m o d c = [ ( m a + c s a ) ( m b + c s b ) ] m o d c = ( m a m b + c m a s b + c m b s a + c 2 s a s b ) m o d c = ( m a m b ) m o d c = [ ( a m o d c ) × ( b m o d c ) ] m o d c \begin{aligned}\text{设}&a\bmod c=m_a,b\bmod c=m_b(m_a,m_b\in\mathbb{Z})\\ \because&\ a\bmod c=m_a,b\bmod c=m_b\\ \text{令}&a=m_a+xs_a,b=m_b+cs_b(s_a,s_b\in\mathbb{Z})\\ &\begin{aligned}(ab)\bmod c&=[\ (m_a+cs_a)(m_b+cs_b)\ ]\bmod c\\&=(m_am_b+cm_as_b+cm_bs_a+c^2s_as_b)\bmod c\\&=(m_am_b)\bmod c\\&=[\ (a\bmod c)\times(b\bmod c)\ ]\bmod c\end{aligned}\end{aligned} 设∵令amodc=ma,bmodc=mb(ma,mb∈Z) amodc=ma,bmodc=mba=ma+xsa,b=mb+csb(sa,sb∈Z)(ab)modc=[ (ma+csa)(mb+csb) ]modc=(mamb+cmasb+cmbsa+c2sasb)modc=(mamb)modc=[ (amodc)×(bmodc) ]modc
2.2.4. 性质4
属于性质三的一种扩展
( a b ) m o d c = ( a m o d c ) b m o d c (a^b)\bmod c=(a\bmod c)^b\bmod c (ab)modc=(amodc)bmodc
2.2.5. 性质5
如果 a m o d b = c , d ≠ 0 , d ∈ Z a\bmod b=c,d\ne0,d\in\mathbb{Z} amodb=c,d=0,d∈Z ,则 ( a d ) m o d ( b d ) = c d (ad)\bmod(bd)=cd (ad)mod(bd)=cd
证明:
∵ a m o d b = c 设 b x + c = a ( x ∈ Z ) ∴ b x + c = a ⟺ b d x + c d = a d ∴ ( a d ) m o d ( b d ) = c d \begin{aligned}\because&\ a\bmod b=c\\&\text{设}bx+c=a(x\in\mathbb{Z})\\\therefore&\ bx+c=a\Longleftrightarrow bdx+cd=ad\\\therefore&\ (ad)\bmod(bd)=cd\end{aligned} ∵∴∴ amodb=c设bx+c=a(x∈Z) bx+c=a⟺bdx+cd=ad (ad)mod(bd)=cd
2.2.6. 性质6
如果 a m o d b = c , d ∣ a , d ∣ b a\bmod b=c,d\mid a,d\mid b amodb=c,d∣a,d∣b ,则 ( a d ) m o d ( b d ) = c d (\dfrac{a}{d})\bmod(\dfrac{b}{d})=\dfrac{c}{d} (da)mod(db)=dc
证明:
∵ a m o d b = c 设 b x + c = a ( x ∈ Z ) ∴ b x + c = a ⟺ b d x + c d = a d ∴ ( a d ) m o d ( b d ) = c d \begin{aligned}\because&\ a\bmod b=c\\&\text{设}bx+c=a(x\in\mathbb{Z})\\\therefore&\ bx+c=a\Longleftrightarrow \dfrac{b}{d}x+\dfrac{c}{d}=\dfrac{a}{d}\\\therefore&\ (\dfrac{a}{d})\bmod(\dfrac{b}{d})=\dfrac{c}{d}\end{aligned} ∵∴∴ amodb=c设bx+c=a(x∈Z) bx+c=a⟺dbx+dc=da (da)mod(db)=dc
3. 同余
3.1. 定义
设 m m m 是给定的 Z + \mathbb{Z}^+ Z+ ,若满足 m ∣ ( a − b ) m\mid(a-b) m∣(a−b) ,则称 a a a 与 b b b 对模 m m m 同余,记作 a ≡ b ( m o d m ) a\equiv b\pmod{m} a≡b(modm) ;若满足 m ∤ ( a − b ) m\nmid(a-b) m∤(a−b) ,则称 a a a 与 b b b 对模 m m m 不同余
如果将定义反过来,如果 a ≡ b ( m o d m ) a\equiv b\pmod{m} a≡b(modm) ,则 m ∣ ( a − b ) m\mid(a-b) m∣(a−b)(即 a ≡ b ( m o d m ) ⟺ m ∣ ( a − b ) a\equiv b\pmod{m}\iff m\mid(a-b) a≡b(modm)⟺m∣(a−b))
证明1(已知 m ∣ ( a − b ) m\mid(a-b) m∣(a−b)):
∵ m ∣ ( a − b ) 令 m k = a − b ( k ∈ Z , k ≠ 0 ) ∴ m k = a − b ⟺ m k + b = a ⟺ b m o d m = a m o d m ∴ a ≡ b ( m o d m ) \begin{aligned}\because&\ m\mid(a-b)\\&\text{令}mk=a-b(k\in\mathbb{Z},k\ne0)\\\therefore&\ mk=a-b\Longleftrightarrow mk+b=a\Longleftrightarrow b\bmod m=a\bmod m\\\therefore&\ a\equiv b\pmod{m}\end{aligned} ∵∴∴ m∣(a−b)令mk=a−b(k∈Z,k=0) mk=a−b⟺mk+b=a⟺bmodm=amodm a≡b(modm)
证明2(已知 a ≡ b ( m o d m ) a\equiv b\pmod{m} a≡b(modm)):
∵ a ≡ b ( m o d m ) ∴ a m o d m = b m o d m 令 m x + k = a , m y + k = b ( x , y , k ∈ Z ) a − b = m x + k − m y − k = m ( x − y ) ∵ m ∣ m ( x − y ) ∴ m ∣ ( a − b ) \begin{aligned}\because&\ a\equiv b\pmod{m}\\\therefore&\ a\bmod m=b\bmod m\\&\text{令}mx+k=a,my+k=b(x,y,k\in\mathbb{Z})\\&\begin{aligned}a-b&=mx+k-my-k\\&=m(x-y)\\\end{aligned}\\\because&\ m\mid m(x-y)\\\therefore&\ m\mid(a-b)\end{aligned} ∵∴∵∴ a≡b(modm) amodm=bmodm令mx+k=a,my+k=b(x,y,k∈Z)a−b=mx+k−my−k=m(x−y) m∣m(x−y) m∣(a−b)
3.2. 性质
3.2.1. 性质1
a ≡ a ( m o d m ) a\equiv a\pmod{m} a≡a(modm)
3.2.2. 性质2
如果 a ≡ b ( m o d m ) a\equiv b\pmod{m} a≡b(modm) ,那么 b ≡ a ( m o d m ) b\equiv a\pmod{m} b≡a(modm)
3.2.3. 性质3
如果 a ≡ b ( m o d m ) a\equiv b\pmod{m} a≡b(modm) , b ≡ c ( m o d m ) b\equiv c\pmod{m} b≡c(modm) ,那么 a ≡ c ( m o d m ) a\equiv c\pmod{m} a≡c(modm)
3.2.4. 性质4
如果 a ≡ b ( m o d m ) a\equiv b\pmod{m} a≡b(modm) ,那么 ( a + c ) ≡ ( b + c ) ( m o d m ) (a+c)\equiv(b+c)\pmod{m} (a+c)≡(b+c)(modm)
证明:
∵ a ≡ b ( m o d m ) 令 m k = a − b ( k ∈ Z ) m k = a − b = a + c − b − c = ( a + c ) − ( b + c ) ∴ ( a + c ) ≡ ( b + c ) ( m o d m ) \begin{aligned}\because&\ a\equiv b\pmod{m}\\&\text{令}mk=a-b(k\in\mathtt{Z})\\&\begin{aligned}mk&=a-b\\&=a+c-b-c\\&=(a+c)-(b+c)\end{aligned}\\\therefore&\ (a+c)\equiv(b+c)\pmod{m}\end{aligned} ∵∴ a≡b(modm)令mk=a−b(k∈Z)mk=a−b=a+c−b−c=(a+c)−(b+c) (a+c)≡(b+c)(modm)
3.2.5. 性质5
如果 a ≡ b ( m o d m ) a\equiv b\pmod{m} a≡b(modm) ,那么 ( a − c ) ≡ ( b − c ) ( m o d m ) (a-c)\equiv(b-c)\pmod{m} (a−c)≡(b−c)(modm)
证明方法类似于性质3
3.2.6. 性质6
如果 a ≡ b ( m o d m ) a\equiv b\pmod{m} a≡b(modm) ,那么 ( a c ) ≡ ( b c ) ( m o d m ) (ac)\equiv(bc)\pmod{m} (ac)≡(bc)(modm)
证明:
∵ a ≡ b ( m o d m ) 令 m k = a − b ( k ∈ Z ) ∴ m k = a − b ⟺ m k c = a c − b c ∴ ( a c ) ≡ ( b c ) ( m o d m ) \begin{aligned}\because&\ a\equiv b\pmod{m}\\&\text{令}mk=a-b(k\in\mathtt{Z})\\\therefore&\ mk=a-b\Longleftrightarrow mkc=ac-bc\\\therefore&\ (ac)\equiv(bc)\pmod{m}\end{aligned} ∵∴∴ a≡b(modm)令mk=a−b(k∈Z) mk=a−b⟺mkc=ac−bc (ac)≡(bc)(modm)
3.2.7. 性质7
如果 a ≡ b ( m o d m ) , c ∣ a , c ∣ b , ( c , m ) = 1 a\equiv b\pmod{m},c\mid a,c\mid b,(c,m)=1 a≡b(modm),c∣a,c∣b,(c,m)=1 ,那么 ( a c ) ≡ ( b c ) ( m o d m ) (\dfrac{a}{c})\equiv(\dfrac{b}{c})\pmod{m} (ca)≡(cb)(modm)
多说一句: ( a , b ) = gcd ( a , b ) (a,b)=\gcd(a,b) (a,b)=gcd(a,b)
证明:
∵ a ≡ b ( m o d m ) 令 m k = a − b ( k ∈ Z ) ∴ m k = a − b ⟺ m k c = a c − b c ∵ c ∣ a , c ∣ b ∴ a c , b c ∈ Z ∴ m k c ∈ Z ∵ ( c , m ) = 1 ∴ m c ∉ Z ∴ k c ∈ Z ∴ a c ≡ b c ( m o d m ) \begin{aligned}\because&\ a\equiv b\pmod{m}\\&\text{令}mk=a-b(k\in\mathtt{Z})\\\therefore&\ mk=a-b\Longleftrightarrow m\dfrac{k}{c}&=\dfrac{a}{c}-\dfrac{b}{c}\\\because&\ c\mid a,c\mid b\\\therefore&\ \dfrac{a}{c},\dfrac{b}{c}\in\mathbb{Z}\\\therefore&\ \dfrac{mk}{c}\in\mathbb{Z}\\\because&\ (c,m)=1\\\therefore&\ \dfrac{m}{c}\not\in\mathbb{Z}\\\therefore&\ \dfrac{k}{c}\in\mathbb{Z}\\\therefore&\ \dfrac{a}{c}\equiv\dfrac{b}{c}\pmod{m}\end{aligned} ∵∴∵∴∴∵∴∴∴ a≡b(modm)令mk=a−b(k∈Z) mk=a−b⟺mck c∣a,c∣b ca,cb∈Z cmk∈Z (c,m)=1 cm∈Z ck∈Z ca≡cb(modm)=ca−cb
3.2.8. 性质8
如果 a ≡ b ( m o d m ) a\equiv b\pmod{m} a≡b(modm) ,那么 ( a c ) ≡ ( b c ) ( m o d m ) (a^c)\equiv(b^c)\pmod{m} (ac)≡(bc)(modm)
证明:
∵ a ≡ b ( m o d m ) 令 m k = a − b ( k ∈ Z ) m k = a − b m k × ∑ i = 0 c − 1 a i b c − i − 1 = ( a − b ) × ∑ i = 0 c − 1 a i b c − i − 1 m k × ∑ i = 0 c − 1 a i b c − i − 1 = a c − b c ∴ ( a c ) ≡ ( b c ) ( m o d m ) \begin{aligned}\because&\ a\equiv b\pmod{m}\\&\text{令}mk=a-b(k\in\mathtt{Z})\\\\&\begin{aligned}mk&=a-b\\mk\times\sum\limits_{i=0}^{c-1}a^ib^{c-i-1}&=(a-b)\times\sum\limits_{i=0}^{c-1}a^ib^{c-i-1}\\mk\times\sum\limits_{i=0}^{c-1}a^ib^{c-i-1}&=a^c-b^c\end{aligned}\\\\\therefore&\ (a^c)\equiv(b^c)\pmod{m}\end{aligned} ∵∴ a≡b(modm)令mk=a−b(k∈Z)mkmk×i=0∑c−1aibc−i−1mk×i=0∑c−1aibc−i−1=a−b=(a−b)×i=0∑c−1aibc−i−1=ac−bc (ac)≡(bc)(modm)
另注: a n − b n = ( a − b ) × ∑ i = 0 n − 1 a i b n − i − 1 a^n-b^n=(a-b)\times\sum\limits_{i=0}^{n-1}a^ib^{n-i-1} an−bn=(a−b)×i=0∑n−1aibn−i−1
3.2.9. 性质9
如果 a ≡ b ( m o d m ) , c ≡ d ( m o d m ) a\equiv b\pmod{m},c\equiv d\pmod{m} a≡b(modm),c≡d(modm) ,那么 ( a + c ) ≡ ( b + d ) ( m o d m ) (a+c)\equiv (b+d)\pmod{m} (a+c)≡(b+d)(modm)
证明:
∵ a ≡ b ( m o d m ) , c ≡ d ( m o d m ) 令 m x = a − b , m y = c − d ( x , y ∈ Z ) m x + m y = a − b + c − d m ( x + y ) = a + c − ( b + d ) ∴ ( a + c ) ≡ ( b + d ) ( m o d m ) \begin{aligned}\because&\ a\equiv b\pmod{m},c\equiv d\pmod{m}\\&\text{令}mx=a-b,my=c-d(x,y\in\mathtt{Z})\\&\begin{aligned}mx+my&=a-b+c-d\\m(x+y)&=a+c-(b+d)\end{aligned}\\\therefore&\ (a+c)\equiv(b+d)\pmod{m}\end{aligned} ∵∴ a≡b(modm),c≡d(modm)令mx=a−b,my=c−d(x,y∈Z)mx+mym(x+y)=a−b+c−d=a+c−(b+d) (a+c)≡(b+d)(modm)
3.2.10. 性质10
如果 a ≡ b ( m o d m ) , c ≡ d ( m o d m ) a\equiv b\pmod{m},c\equiv d\pmod{m} a≡b(modm),c≡d(modm) ,那么 ( a c ) ≡ ( b d ) ( m o d m ) (ac)\equiv (bd)\pmod{m} (ac)≡(bd)(modm)
证明:
∵ a ≡ b ( m o d m ) , c ≡ d ( m o d m ) 令 m x = a − b , m y = c − d ( x , y ∈ Z ) ∵ m x = a − b , m y = c − d ∴ m x c = a c − b c , m y b = b c − c d ∴ m x c + m y b = a c − b c + b c − c d ⟺ m ( x c + y b ) = a c − b d ∴ ( a c ) ≡ ( b d ) ( m o d m ) \begin{aligned}\because&\ a\equiv b\pmod{m},c\equiv d\pmod{m}\\&\text{令}mx=a-b,my=c-d(x,y\in\mathtt{Z})\\\because&\ mx=a-b,my=c-d\\\therefore&\ mxc=ac-bc,myb=bc-cd\\\therefore&\ mxc+myb=ac-bc+bc-cd\Longleftrightarrow m(xc+yb)=ac-bd \\\therefore&\ (ac)\equiv(bd)\pmod{m}\end{aligned} ∵∵∴∴∴ a≡b(modm),c≡d(modm)令mx=a−b,my=c−d(x,y∈Z) mx=a−b,my=c−d mxc=ac−bc,myb=bc−cd mxc+myb=ac−bc+bc−cd⟺m(xc+yb)=ac−bd (ac)≡(bd)(modm)
3.2.11. 性质11
如果 a m o d p = x , a m o d q = x , ( p , q ) = 1 a\bmod p=x,a\bmod q=x,(p,q)=1 amodp=x,amodq=x,(p,q)=1 ,那么 a m o d ( p q ) = x a\bmod (pq)=x amod(pq)=x
证明:
∵ a m o d p = x , a m o d q = x 令 p k 1 + x = a , q k 2 + x = a ( k 1 , k 2 ∈ Z ) ∴ p k 1 + x = q k 2 + x ∴ p k 1 q = k 2 ∵ k 2 ∈ Z ∴ p k 1 q ∈ Z ∵ ( p , q ) = 1 ∴ p q ∉ Z ∴ k 1 q ∈ Z ∴ q k 3 = k 1 ∴ p k 1 + x = a ⟺ p q k 3 + x = a ∴ a m o d ( p q ) = x \begin{aligned}\because&\ a\bmod p=x,a\bmod q=x\\&\text{令}pk_1+x=a,qk_2+x=a(k_1,k_2\in\mathbb{Z})\\\therefore&\ pk_1+x=qk_2+x\\\therefore&\ \dfrac{pk_1}{q}=k_2\\\because&\ k_2\in\mathbb{Z}\\\therefore&\ \dfrac{pk_1}{q}\in\mathbb{Z}\\\because&\ (p,q)=1\\\therefore&\ \dfrac{p}{q}\not\in\mathbb{Z}\\\therefore&\ \dfrac{k_1}{q}\in\mathbb{Z}\\\therefore&\ qk_3=k_1\\\therefore&\ pk_1+x=a\Longleftrightarrow pqk_3+x=a\\\therefore&\ a\bmod(pq)=x\end{aligned} ∵∴∴∵∴∵∴∴∴∴∴ amodp=x,amodq=x令pk1+x=a,qk2+x=a(k1,k2∈Z) pk1+x=qk2+x qpk1=k2 k2∈Z qpk1∈Z (p,q)=1 qp∈Z qk1∈Z qk3=k1 pk1+x=a⟺pqk3+x=a amod(pq)=x
4. 排列组合
咕咕咕
5. 筛法
5.1. 暴力筛
暴力筛,顾名思义,非常暴力的筛法(?
暴力筛是所有筛法的祖先,需要好好掌握
我们知道,一个数的倍数是一个合数,那么,我们可以进行一个遍历,将每一个数的倍数全部标记一遍,剩下的未被标记的就是质数了
#include<cmath>
#include<cstdio>
bool flag[200000005];
int n,ans,maxn; //ans 用于统计质数数量, maxn 用于记录最大质数
int main(){
scanf("%d",&n);
for(int i=2;i<=sqrt(n);i++){ //只需枚举到 sqrt(n) 即可
//原理很简单,假设 n=pq(p<q) ,那么,我们一定会在 p 之前的 q 枚举,而 p 的最大值又是 sqrt(n) ,所以枚举到 sqrt(n) 即可
if(!flag[i]){ //未被标记,说明是质数
ans++,maxn=i; //更新数量和最大值
}
for(int j=i+i;j<=n;j+=i){ //将其倍数设为合数
flag[j]=1;
}
}
for(int i=sqrt(n)+1;i<=n;i++){ //因为遍历到 sqrt(n) 就结束了,后面的素数还要再来一个循环统计一次
if(!flag[i]){
ans++;
maxn=i;
}
}
printf("%d %d",ans,maxn);
return 0;
}
然而,这显然不是最优筛法
5.2. 埃式筛
我们发现,假设一个合数 n n n 的其中一个质因子为 k k k ,那么 n = k x n=kx n=kx , n n n 与其倍数必然已经在遍历到 k k k 的时候标记了,就不用再筛一遍了
所以,我们可以只用筛素数的倍数即可
#include<cmath>
#include<cstdio>
bool flag[200000005];
int n,ans,maxn;
int main(){
scanf("%d",&n);
for(int i=2;i<=sqrt(n);i++){
if(!flag[i]){
ans++;
maxn=i;
}
if(flag[i]){ //当遍历到素数时,直接跳过,不进行遍历,剩下的和暴力筛一模一样
continue;
}
for(int j=i+i;j<=n;j+=i){
flag[j]=1;
}
}
for(int i=sqrt(n)+1;i<=n;i++){
if(!flag[i]){
ans++;
maxn=i;
}
}
printf("%d %d",ans,maxn);
return 0;
}
埃式筛已经够快了,但是,我们还有一个更快的解决方法
5.3. 欧拉筛
在埃式筛中,某些数依旧会被重复标记两次,比如 12 12 12 ,既会被 3 3 3 标记,也会被 2 2 2 标记
这时,我们尽量让每个数只被标记一次
而欧拉筛的原理是让每一个数被它的最小质因数标记
这里先上代码
#include<cstdio>
bool flag[200000005];
int n,ans,maxn;
int num[1500005],len; //num 数组用于统计素数数组
int main(){
scanf("%d",&n);
for(int i=2;i<=n;i++){
if(!flag[i]){ //遍历到素数
num[++len]=i,ans++,maxn=i;
}
for(int j=1;j<=len&&num[j]*i<=n;j++){ //枚举可能的最小质因数
flag[num[j]*i]=1; //标记
if(i%num[j]==0){ //后文会有详细解释
break;
}
}
}
printf("%d %d",ans,maxn);
return 0;
}
这里解释一下这一段代码:
if(i%num[j]==0){
break;
}
假设 n u m [ j ] = k ∵ k ∣ i ∴ i = k x ( x ∈ Z + ) 当枚举到 n u m [ j + 1 ] = k 1 时 i k 1 = k x k 1 ∵ k < k 1 ∴ k 1 不是最小质因数 \begin{aligned}&\text{假设}\ num[\ j\ ]=k\\\because&\ k\mid i\\\therefore&\ i=kx(x\in\mathbb{Z}^+)\\&\text{当枚举到}\ num[\ j+1\ ]=k_1\ \text{时}\\&ik_1=kxk_1\\\because&\ k<k_1\\\therefore&\ k_1\ \text{不是最小质因数}\end{aligned} ∵∴∵∴假设 num[ j ]=k k∣i i=kx(x∈Z+)当枚举到 num[ j+1 ]=k1 时ik1=kxk1 k<k1 k1 不是最小质因数
显然,这样已经违背了欧拉筛的原理,所以退出
6. gcd/lcm
6.1. 定义
公约数定义:一般设有 k k k 个数 a 1 , a 2 , a 3 , ⋯ , a k ∈ Z + a_1,a_2,a_3,\cdots,a_k\in\mathbb{Z}^+ a1,a2,a3,⋯,ak∈Z+ ,如果 ∃ d ∈ Z + \exists d\in\mathbb{Z}^+ ∃d∈Z+ ,使 d ∣ a 1 , d ∣ a 2 , d ∣ a 3 , ⋯ , d ∣ a k d\mid a_1,d\mid a_2,d\mid a_3,\cdots,d\mid a_k d∣a1,d∣a2,d∣a3,⋯,d∣ak ,那么 d d d 为 a 1 , a 2 , a 3 , ⋯ , a k a_1,a_2,a_3,\cdots,a_k a1,a2,a3,⋯,ak 的公约数, d d d 是不唯一的
最大公约数:在 a 1 , a 2 , a 3 , ⋯ , a k a_1,a_2,a_3,\cdots,a_k a1,a2,a3,⋯,ak 的公约数集合中,最大的那个公约数称为最大公约数,如果是 a , b a,b a,b 两个元素的最大公约数,记为 gcd ( a , b ) \gcd(a,b) gcd(a,b) ,简写为 ( a , b ) (a,b) (a,b)
公因数与最小公因数的定义与公约数与最大公约数的定义类似,注意一下符号即可:
a , b a,b a,b 两个元素的最小公因数记为 lcm ( a , b ) \operatorname{lcm}(a,b) lcm(a,b) ,简写为 [ a , b ] [a,b] [a,b]
6.2. 一个定理
gcd ( a , b ) × lcm ( a , b ) = a b \gcd(a,b)\times\operatorname{lcm}(a,b)=ab gcd(a,b)×lcm(a,b)=ab
证明:
将 a , b 进行质因子分解,设其质因子集合并集为 { p 1 , p 2 , ⋯ , p n } 设 a = p 1 k 1 p 1 k 2 ⋯ p n k n , b = p 1 j 1 p 1 j 2 ⋯ p n j n ( j i , k i ∈ Z , j i ≥ 0 , k i ≥ 0 ) ∵ gcd ( a , b ) = p 1 min ( k 1 , j 1 ) p 2 min ( k 2 , j 2 ) ⋯ p n min ( k n , j n ) lcm ( a , b ) = p 1 max ( k 1 , j 1 ) p 2 max ( k 2 , j 2 ) ⋯ p n max ( k n , j n ) min ( a , b ) + lcm ( a , b ) = a + b ∴ gcd ( a , b ) × lcm ( a , b ) = p 1 min ( k 1 , j 1 ) p 2 min ( k 2 , j 2 ) ⋯ p n min ( k n , j n ) p 1 max ( k 1 , j 1 ) p 2 max ( k 2 , j 2 ) ⋯ p n max ( k n , j n ) = p 1 min ( k 1 , j 1 ) + max ( k 1 , j 1 ) p 2 min ( k 2 , j 2 ) + max ( k 2 , j 2 ) ⋯ p n min ( k n , j n ) + max ( k n , j n ) = p 1 k 1 + j 1 p 2 k 2 + j 2 ⋯ p n k n + j n = p 1 k 1 p 1 k 2 ⋯ p n k n p 1 j 1 p 1 j 2 ⋯ p n j n = a b \begin{aligned}&\text{将}a,b\text{进行质因子分解,设其质因子集合并集为}\{p_1,p_2,\cdots,p_n\} \\&\text{设}a=p_1^{k_1}p_1^{k_2}\cdots p_n^{k_n},b=p_1^{j_1}p_1^{j_2}\cdots p_n^{j_n}(j_i,k_i\in\mathbb{Z},j_i\ge0,k_i\ge0)\\&\because\ \gcd(a,b)=p_1^{\min(k_1,j_1)}p_2^{\min(k_2,j_2)}\cdots p_n^{\min(k_n,j_n)}\\&\operatorname{lcm}(a,b)=p_1^{\max(k_1,j_1)}p_2^{\max(k_2,j_2)}\cdots p_n^{\max(k_n,j_n)}\\&\min(a,b)+\operatorname{lcm}(a,b)=a+b\\&\ \begin{aligned}\therefore\gcd(a,b)\times\operatorname{lcm}(a,b)&=p_1^{\min(k_1,j_1)}p_2^{\min(k_2,j_2)}\cdots p_n^{\min(k_n,j_n)}p_1^{\max(k_1,j_1)}p_2^{\max(k_2,j_2)}\cdots p_n^{\max(k_n,j_n)}\\&=p_1^{\min(k_1,j_1)+\max(k_1,j_1)}p_2^{\min(k_2,j_2)+\max(k_2,j_2)}\cdots p_n^{\min(k_n,j_n)+\max(k_n,j_n)}\\&=p_1^{k_1+j_1}p_2^{k_2+j_2}\cdots p_n^{k_n+j_n}\\&=p_1^{k_1}p_1^{k_2}\cdots p_n^{k_n}p_1^{j_1}p_1^{j_2}\cdots p_n^{j_n}\\&=ab\end{aligned}\end{aligned} 将a,b进行质因子分解,设其质因子集合并集为{p1,p2,⋯,pn}设a=p1k1p1k2⋯pnkn,b=p1j1p1j2⋯pnjn(ji,ki∈Z,ji≥0,ki≥0)∵ gcd(a,b)=p1min(k1,j1)p2min(k2,j2)⋯pnmin(kn,jn)lcm(a,b)=p1max(k1,j1)p2max(k2,j2)⋯pnmax(kn,jn)min(a,b)+lcm(a,b)=a+b ∴gcd(a,b)×lcm(a,b)=p1min(k1,j1)p2min(k2,j2)⋯pnmin(kn,jn)p1max(k1,j1)p2max(k2,j2)⋯pnmax(kn,jn)=p1min(k1,j1)+max(k1,j1)p2min(k2,j2)+max(k2,j2)⋯pnmin(kn,jn)+max(kn,jn)=p1k1+j1p2k2+j2⋯pnkn+jn=p1k1p1k2⋯pnknp1j1p1j2⋯pnjn=ab
6.3. 欧几里得算法
一种非常常见的求最大公约数的算法:
gcd ( a , b ) = gcd ( b , a m o d b ) \gcd(a,b)=\gcd(b,a\bmod b) gcd(a,b)=gcd(b,amodb)
代码形式:
#include<cstdio>
int gcd(int a,int b){
return !b?a:gcd(b,a%b);
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
printf("%d",gcd(n,m));
return 0;
}
//非常简单,应该不用注释了吧
证明一下:
设 gcd ( a , b ) = p ∴ a = k p , b = g p ( gcd ( k , g ) = 1 ) ∴ a m o d b = ( k p ) m o d ( g p ) = ( k m o d g ) p gcd ( b , a m o d b ) = gcd ( g p , ( k m o d g ) p ) = p = gcd ( a , b ) \begin{aligned}&\text{设}\gcd(a,b)=p\\\therefore&\ a=kp,b=gp(\gcd(k,g)=1)\\\therefore&\ a\bmod b=(kp)\bmod(gp)=(k\bmod g)p\\&\begin{aligned}\gcd(b,a\bmod b)&=\gcd(gp,(k\bmod g)p)\\&=p\\&=\gcd(a,b)\end{aligned}\end{aligned} ∴∴设gcd(a,b)=p a=kp,b=gp(gcd(k,g)=1) amodb=(kp)mod(gp)=(kmodg)pgcd(b,amodb)=gcd(gp,(kmodg)p)=p=gcd(a,b)
7. 裴蜀定理
这是一个非常常见的定理,相当重要
7.1. 基本定理
对于不定方程 a x + b y = m ( a , b , x , y , m ∈ Z ) ax+by=m(a,b,x,y,m\in\mathbb{Z}) ax+by=m(a,b,x,y,m∈Z) ,其有解的充分必要条件为 gcd ( a , b ) ∣ m \gcd(a,b)\mid m gcd(a,b)∣m
证明1(已知 a x + b y = m ax+by=m ax+by=m 有解):
∵ a x + b y = m 有解 ∴ ∃ x , y ∈ Z , 满足 a x + b y = m ∵ gcd ( a , b ) ∣ a , gcd ( a , b ) ∣ b ∴ gcd ( a , b ) ∣ ( a x + b y ) ( 整除性质2 ) ∴ gcd ( a , b ) ∣ m \begin{aligned}\because&\ ax+by=m\text{有解}\\\therefore&\ \exists\ x,y\in\mathbb{Z},\text{满足}ax+by=m\\\because&\ \gcd(a,b)\mid a,\gcd(a,b)\mid b\\\therefore&\ \gcd(a,b)\mid (ax+by)(\text{整除性质2})\\\therefore&\ \gcd(a,b)\mid m\end{aligned} ∵∴∵∴∴ ax+by=m有解 ∃ x,y∈Z,满足ax+by=m gcd(a,b)∣a,gcd(a,b)∣b gcd(a,b)∣(ax+by)(整除性质2) gcd(a,b)∣m
证明2(已知 gcd ( a , b ) ∣ m \gcd(a,b)\mid m gcd(a,b)∣m):
咕咕咕
OI 中常见的有关裴蜀定理的出题形式(?
对于 ∀ x , y ∈ Z \forall x,y\in\mathbb{Z} ∀x,y∈Z ,函数 f ( a , b ) = a x + b y \operatorname{f}(a,b)=ax+by f(a,b)=ax+by 的最小 Z + \mathbb{Z}^+ Z+ 的取值为 gcd ( a , b ) \gcd(a,b) gcd(a,b)
证明:
设 m = a x + b y 由裴蜀定理得: gcd ( a , b ) k = m ( k ∈ Z + ) ∵ k 的最小值为 1 , gcd ( a , b ) 为定值 ∴ m 的最小值为 gcd ( a , b ) \begin{aligned}&\text{设}\ m=ax+by\\&\text{由裴蜀定理得:}\ \gcd(a,b)k=m(k\in\mathbb{Z}^+)\\\because&\ k\ \text{的最小值为}\ 1,\gcd(a,b)\ \text{为定值}\\\therefore&\ m\ \text{的最小值为}\ \gcd(a,b)\end{aligned} ∵∴设 m=ax+by由裴蜀定理得: gcd(a,b)k=m(k∈Z+) k 的最小值为 1,gcd(a,b) 为定值 m 的最小值为 gcd(a,b)
7.2. 引理及推论
7.2.1. 引理1
上台社死后我发现,我换一个表述方式似乎就没什么大问题了QAQ
如果 a , b ∈ Z + , ( a , b ) = 1 a,b\in\mathbb{Z}^+,(a,b)=1 a,b∈Z+,(a,b)=1 ,则 ∄ \nexists ∄ 小于 b b b 的 k ∈ Z + k\in\mathbb{Z}^+ k∈Z+ ,满足 b ∣ a k b\mid ak b∣ak
证明:
假设存在小于 b 的 k ∈ Z , 满足 b ∣ a k ∴ a k 中包含 b 的全部质因子 ∵ ( a , b ) = 1 ∴ a 不可能包含 b 的任何质因子 ∴ k 中包含 b 的全部质因子 ∴ k = b x ( x ∈ Z + ) ∵ b > k ∴ 矛盾,假设不成立 \begin{aligned}&\text{假设存在小于}\ b\ \text{的}\ k\in\mathbb{Z},\text{满足}b\mid ak\\\therefore&\ ak\ \text{中包含}\ b\ \text{的全部质因子}\\\because&\ (a,b)=1\\\therefore&\ a\ \text{不可能包含} b\ \text{的任何质因子}\\\therefore&\ k\ \text{中包含}\ b\ \text{的全部质因子}\\\therefore&\ k=bx(x\in\mathbb{Z}^+)\\\because&\ b>k\\\therefore&\ \text{矛盾,假设不成立}\end{aligned} ∴∵∴∴∴∵∴假设存在小于 b 的 k∈Z,满足b∣ak ak 中包含 b 的全部质因子 (a,b)=1 a 不可能包含b 的任何质因子 k 中包含 b 的全部质因子 k=bx(x∈Z+) b>k 矛盾,假设不成立
7.2.2. 推论
如果 a , b ∈ Z + , ( a , b ) = 1 a,b\in\mathbb{Z}^+,(a,b)=1 a,b∈Z+,(a,b)=1 ,则 0 , a , 2 a , ⋯ , ( b − 1 ) a 0,a,2a,\cdots,(b-1)a 0,a,2a,⋯,(b−1)a 这些数模 b b b 的余数互不相同
证明:
假设 a i , a j 模 b 的余数相同 ( 1 < j < i < b ) ,即 a i m o d b = a j m o d b ∴ a i m o d b − a j m o d b = 0 ⟺ ( a i − a j ) m o d b = 0 ⟺ a ( i − j ) m o d b = 0 ∴ b ∣ a ( i − j ) ( i − j < b ) ∵ a , b ∈ Z + , ( a , b ) = 1 ∴ ∄ 小于 b 的 k ∈ Z + ,满足 b ∣ a k ∴ 矛盾,假设不成立 \begin{aligned}&\text{假设}\ ai,aj\ \text{模}\ b\ \text{的余数相同}\ (1<j<i<b)\ \text{,即}\ ai\bmod b=aj\bmod b\\\therefore&\ ai\bmod b-aj\bmod b=0\Longleftrightarrow (ai-aj)\bmod b=0\Longleftrightarrow a(i-j)\bmod b=0\\\therefore&\ b\mid a(i-j)(i-j<b)\\\because&\ a,b\in\mathbb{Z}^+,(a,b)=1\\\therefore&\ \nexists\ \text{小于}\ b\ \text{的}\ k\in\mathbb{Z}^+\ \text{,满足}\ b\mid ak\\\therefore&\ \text{矛盾,假设不成立}\end{aligned} ∴∴∵∴∴假设 ai,aj 模 b 的余数相同 (1<j<i<b) ,即 aimodb=ajmodb aimodb−ajmodb=0⟺(ai−aj)modb=0⟺a(i−j)modb=0 b∣a(i−j)(i−j<b) a,b∈Z+,(a,b)=1 ∄ 小于 b 的 k∈Z+ ,满足 b∣ak 矛盾,假设不成立
7.2.3. 引理2
如果 ( a , b ) = 1 (a,b)=1 (a,b)=1 ,则 ∃ k ∈ Z \exists\ k\in\mathbb{Z} ∃ k∈Z ,满足 a k m o d b = 1 ak\bmod b=1 akmodb=1
由推论可以很容易的得到该结论
8. 扩展欧几里得
扩展欧几里得(简称扩欧),是一种算法,一般封装为函数,其函数名为 exgcd
可以在已知 a , b ∈ Z a,b\in\mathbb{Z} a,b∈Z 的情况下,求不定方程 a x + b y = gcd ( a , b ) ax+by=\gcd(a,b) ax+by=gcd(a,b) 的一组整数解,通常情况下用扩欧求得的解满足 x y < 0 xy<0 xy<0
证明:
设 a x 1 + b y 1 = gcd ( a , b ) , b x 2 + ( a m o d b ) y 2 = gcd ( b , a m o d b ) 由欧几里得算法得 gcd ( a , b ) = gcd ( b , a m o d b ) ∴ a x 1 + b y 1 = b x 2 + ( a m o d b ) y 2 ∵ a m o d b = a − b ⌊ a b ⌋ a x 1 + b y 1 = b x 2 + ( a m o d b ) y 2 = b x 2 + ( a − b ⌊ a b ⌋ ) y 2 = b x 2 + a y 2 − b ⌊ a b ⌋ y 2 = a y 2 + b ( x 2 − b ⌊ a b ⌋ ) ∴ { x 1 = y 2 y 1 = x 2 − b ⌊ a b ⌋ 是方程 a x 1 + b y 1 = gcd ( a , b ) 的一组解,且该组解由 ( x 2 , y 2 ) 得来 当第 n 组方程关于 gcd ( a , 0 ) 时,有 a x n + b y n = a ∴ { x n = 1 y n = ∀ k ∈ Z 是方程 a x n + b y n = a 的一组解 ∴ 可以由解 ( x n , y n ) 得到解 ( x 1 , y 1 ) \begin{aligned}&\text{设}\ ax_1+by_1=\gcd(a,b),bx_2+(a\bmod b)y_2=\gcd(b,a\bmod b)\\&\text{由欧几里得算法得}\ \gcd(a,b)=\gcd(b,a\bmod b)\\\therefore&\ ax_1+by_1=bx_2+(a\bmod b)y_2\\\because&\ a\bmod b=a-b\left\lfloor\dfrac{a}{b}\right\rfloor\\&\begin{aligned}ax_1+by_1&=bx_2+(a\bmod b)y_2\\&=bx_2+(a-b\left\lfloor\dfrac{a}{b}\right\rfloor)y_2\\&=bx_2+ay_2-b\left\lfloor\dfrac{a}{b}\right\rfloor y_2\\&=ay_2+b(x_2-b\left\lfloor\dfrac{a}{b}\right\rfloor)\end{aligned}\\\therefore&\ \begin{cases}x_1=y_2\\y_1=x_2-b\left\lfloor\dfrac{a}{b}\right\rfloor\\\end{cases}\ \text{是方程}\ ax_1+by_1=\gcd(a,b)\ \text{的一组解,且该组解由}\ (x_2,y_2)\ \text{得来}\\&\text{当第}\ n\ \text{组方程关于}\ \gcd(a,0)\ \text{时,有}\ ax_n+by_n=a\\\therefore&\ \begin{cases}x_n=1\\y_n=\forall \ k\in\mathbb{Z}\end{cases}\ \text{是方程}\ ax_n+by_n=a\ \text{的一组解}\\\therefore&\ \text{可以由解}\ (x_n,y_n)\ \text{得到解}\ (x_1,y_1)\end{aligned} ∴∵∴∴∴设 ax1+by1=gcd(a,b),bx2+(amodb)y2=gcd(b,amodb)由欧几里得算法得 gcd(a,b)=gcd(b,amodb) ax1+by1=bx2+(amodb)y2 amodb=a−b⌊ba⌋ax1+by1=bx2+(amodb)y2=bx2+(a−b⌊ba⌋)y2=bx2+ay2−b⌊ba⌋y2=ay2+b(x2−b⌊ba⌋) {x1=y2y1=x2−b⌊ba⌋ 是方程 ax1+by1=gcd(a,b) 的一组解,且该组解由 (x2,y2) 得来当第 n 组方程关于 gcd(a,0) 时,有 axn+byn=a {xn=1yn=∀ k∈Z 是方程 axn+byn=a 的一组解 可以由解 (xn,yn) 得到解 (x1,y1)
我们拿这道题来举个例子
8.1. 小练习
我们来处理一下原方程:
a x ≡ 1 ( m o d b ) b y + 1 = a x ( y ∈ Z ) a x − b y = 1 \begin{aligned}ax&\equiv1\pmod{b}\\by+1&=ax(y\in\mathbb{Z})\\ax-by&=1\end{aligned} axby+1ax−by≡1(modb)=ax(y∈Z)=1
这样一来,直接套扩欧,再处理一下取值,基本上就没问题了
不 开 long long 见 祖 宗
#include<cstdio>
long long int a,b,c,x,y;
void exgcd(long long int a,long long int b){ //扩欧模板
if(!b){
x=1,y=0;
return;
}
exgcd(b,a%b);
long long int t=x;
x=y;
y=t-a/b*y;
}
int main(){
scanf("%lld%lld",&a,&b);
exgcd(a,b);
if(x<0){ //处理结果,保证是最小的正整数
x=x+(-x/b+1)*b;
}else{
x=x-x/b*b;
}
printf("%lld",x); //输出
return 0;
}
//水
9. 费马小定理
如果 p p p 为质数,且 a m o d p ≠ 0 a\bmod p\ne0 amodp=0 ,则 a p − 1 m o d p = 1 a^{p-1}\bmod p=1 ap−1modp=1
证明:
∵ a ( 2 a ) ( 3 a ) ⋯ [ ( p − 1 ) a ] m o d p = a p − 1 × ( p − 1 ) ! m o d p 又 ∵ p 为质数,且 a m o d p ≠ 0 ∴ 由裴蜀定理推论得: a m o d p , ( 2 a ) m o d p , ( 3 a ) m o d p , ⋯ , [ ( p − 1 ) a ] m o d p 互不相等,且在区间 ( 0 , p ) 内 ∴ a ( 2 a ) ( 3 a ) ⋯ [ ( p − 1 ) a ] m o d p = ( p − 1 ) ! m o d p ∴ a p − 1 ( p − 1 ) ! ≡ ( p − 1 ) ! ( m o d p ) ∵ p 为质数 ∴ ( ( p − 1 ) ! , p ) = 1 ∴ a p − 1 ≡ 1 ( m o d p ) \begin{aligned}\because&\ a(2a)(3a)\cdots[(p-1)a]\bmod p=a^{p-1}\times(p-1)!\bmod p\\\text{又}\ \because&\ p\ \text{为质数,且}\ a\bmod p\ne0\\\therefore&\ \text{由裴蜀定理推论得:}\ a\bmod p,(2a)\bmod p,(3a)\bmod p,\cdots,[(p-1)a]\bmod p\ \text{互不相等,且在区间}\ (0,p)\ \text{内}\\\therefore&\ a(2a)(3a)\cdots[(p-1)a]\bmod p=(p-1)!\bmod p\\\therefore&\ a^{p-1}(p-1)!\equiv(p-1)!\pmod{p}\\\because&\ p\ \text{为质数}\\\therefore&\ ((p-1)!,p)=1\\\therefore&\ a^{p-1}\equiv1\pmod{p}\end{aligned} ∵又 ∵∴∴∴∵∴∴ a(2a)(3a)⋯[(p−1)a]modp=ap−1×(p−1)!modp p 为质数,且 amodp=0 由裴蜀定理推论得: amodp,(2a)modp,(3a)modp,⋯,[(p−1)a]modp 互不相等,且在区间 (0,p) 内 a(2a)(3a)⋯[(p−1)a]modp=(p−1)!modp ap−1(p−1)!≡(p−1)!(modp) p 为质数 ((p−1)!,p)=1 ap−1≡1(modp)