【数论】GDKOI day1 讲座(数论基本知识 详)


Something Unimportan

//温馨提示1:如果分割线很奇怪的话,记得调一下网页缩放
我的网页缩放一直很大sorry
//温馨提示2:有一天zzl因为数论太烂,回来学习自己的博客,发现即看不懂而且可能很有问题

同余及之后的笔记做的很潦草,很多地方也是个人性简化,不一定标准严格
当然,我后来又去看录屏对着打


质数

  1. 质数无穷多证明
    反证:假设质数有 m m m个,为 P 1 , P 2 , . . . , P m P_1,P_2,...,P_m P1,P2,...,Pm, 则 ∏ i = 1 m P i \prod ^m_{i=1}P_i i=1mPi + 1 +1 +1是质数

  2. π ( x ) π(x) π(x)表示不大于x的质数数量
    π ( x ) = O ( x l n x ) , 其中 l n x = l o g e x π(x) = O(\frac{x}{lnx}),其中lnx = log_e^x π(x)=O(lnxx),其中lnx=logex

  3. 唯一分解定理

N = P 1 c 1 ∗ P 2 c 2 ∗ . . . ∗ P m c m N = P_1^{c1}*P_2^{c2}*...*P_m^{cm} N=P1c1P2c2...Pmcm

  1. 筛素数
    试除法 O ( n n ) O(n\sqrt{n}) O(nn )
    埃氏筛法 O ( n   l n   l n   n ) O(n\ ln\ ln\ n) O(n ln ln n)
    欧拉筛法(线性筛法)
    每个合数只被最小素因子筛除

欧拉函数

1 1 1 ~ n n n中与 n n n互质的个数被称为欧拉函数,记为 φ ( n ) φ(n) φ(n)

****************************************************** (分割线)************************************************************
φ ( n ) φ(n) φ(n)
N = P 1 c 1 ∗ P 2 c 2 ∗ . . . ∗ P m c m N = P_1^{c1}*P_2^{c2}*...*P_m^{cm} N=P1c1P2c2...Pmcm(唯一分解定理)
n = p ∗ q n = p * q n=pq,且 p p p q q q为质数
φ ( n ) = n − n p − n q + n p q ( 容斥 ) φ(n) = n - \frac{n}{p} - \frac{n}{q} + \frac{n}{pq}_{(容斥)} φ(n)=npnqn+pqn(容斥)
              = n ( 1 − 1 p − 1 q + 1 p q ) \ \ \ \ \ \ \ \ \ \ \ \ \ =n(1 - \frac{1}{p} - \frac{1}{q} + \frac{1}{pq})              =n(1p1q1+pq1)
              = n ∗ ( 1 − 1 p ) ( 1 − 1 q ) \ \ \ \ \ \ \ \ \ \ \ \ \ =n*(1-\frac{1}{p})(1-\frac{1}{q})              =n(1p1)(1q1)
由此可得, φ ( n ) = n ∗ ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) . . . ( 1 − 1 p m ) φ(n) = n * (1 - \frac{1}{p_1})(1 - \frac{1}{p_2})...(1 - \frac{1}{p_m}) φ(n)=n(1p11)(1p21)...(1pm1)
φ ( n ) = n ∗ ∏ i = 1 m ( 1 − 1 p i ) φ(n) = n * \prod_{i=1}^m(1 - \frac{1}{p_i}) φ(n)=ni=1m(1pi1)
注意:防止溢出, n n n先除 P i P_i Pi再乘 P i − 1 P_i-1 Pi1

****************************************************** (分割线)************************************************************

  • φ ( 1 ) = 1 φ(1) = 1 φ(1)=1
  • p p p是质数时, φ ( p ) = p − 1 φ(p) = p - 1 φ(p)=p1
  • p p p是质数时,对于 n = p k n = p^k n=pk φ ( n ) = p k − p k − 1 = ( p − 1 ) ∗ p k − 1 φ(n)=p^k - p^{k-1}=(p-1) * p^{k-1} φ(n)=pkpk1=(p1)pk1
  • 对于 g c d ( a , b ) = 1 gcd(a, b) = 1 gcd(a,b)=1 φ ( a b ) = φ ( a ) ∗ φ ( b ) φ(ab) = φ(a) * φ(b) φ(ab)=φ(a)φ(b)。(可见欧拉函数是积性函数=》 f ( a b ) = f ( a ) ∗ f ( b ) f(ab) = f(a)*f(b) f(ab)=f(a)f(b)
  • 对于指数 p p p
    1. n % p = 0 n\%p=0 n%p=0 (也写为 p ∣ n p|n pn),则 φ ( n p ) = φ ( n ) ∗ p φ(np) = φ(n) * p φ(np)=φ(n)p
      2. 若 n % p ≠ 0 n\%p≠0 n%p=0,则 φ ( n p ) = φ ( n ) ∗ ( p − 1 ) φ(np) = φ(n) * (p - 1) φ(np)=φ(n)(p1)
  • 对于 n > 1 n>1 n>1 1 ∼ n 1∼n 1n中与 n n n互质的数的和为 n ∗ φ ( n ) / 2 n*φ(n)/2 nφ(n)/2
  • n = ∑ d ∣ n φ ( d ) n = ∑_{d|n} φ(d) n=dnφ(d)(当 a a a% b b b=0,即 a a a b b b倍数,称为 b b b整除 a a a,记作 b ∣ a b|a ba,上面 p ∣ n p|n pn也是哦)
    证明老师没讲,去找了个博客

同余

  • a % m = b % m → a ≡ b ( m o d   m ) a\%m = b\%m → a≡b(mod\ m) a%m=b%mab(mod m)
  • 整数的集合被分为m(余有 0 ∼ m − 1 0∼ m-1 0m1)个不同的集合,称为模 m m m剩余类(又称同余类),每一个集合中的元素同余
    1. [ 0... m − 1 ] → m o d   m [0...m-1] →mod\ m [0...m1]mod m标准剩余系
    2. [ a 1 , a 2 . . . a φ ( m ) ] [a_1,a_2...a_{φ(m)}] [a1,a2...aφ(m)] a i a_i ai m m m互质 → → 既约剩余系

****************************************************** (分割线)************************************************************

  1. a ≡ b ( m o d   m ) a ≡ b(mod\ m) ab(mod m),当且仅当 m ∣ ( a − b ) m|(a-b) m(ab)
  2. a ≡ b ( m o d   m ) a ≡ b(mod\ m) ab(mod m),当且仅当存在整数 k k k a = b + k m a=b+km a=b+km

****************************************************** (分割线)************************************************************

  • a ≡ b ( m o d   m ) a≡b(mod\ m) ab(mod m),则 a + c ≡ b + c ( m o d   m ) a+c≡b+c(mod\ m) a+cb+c(mod m)
  • a ≡ b ( m o d   m ) a≡b(mod\ m) ab(mod m),则 a ∗ c ≡ b ∗ c ( m o d   m ) a *c≡b*c(mod\ m) acbc(mod m)
  • a ≡ b ( m o d   m ) a≡b(mod\ m) ab(mod m),则 a c ≡ b c ( m o d   m ) a^c≡b^c(mod\ m) acbc(mod m)
  • a   m o d   p = x a\ mod\ p=x a mod p=x a   m o d   q = x a\ mod\ q=x a mod q=x,其中 p p p q q q互质,则 a   m o d   ( p q ) = x a\ mod\ (pq) = x a mod (pq)=x
  • 注意:同余不满足同除性,即不满足 a c ≡ b c ( m o d   m ) \frac{a}{c}≡\frac{b}{c}(mod\ m) cacb(mod m)

欧拉定理

若正整数 a a a n n n互质,则 a φ ( n ) ≡ 1 ( m o d   n ) a^{φ(n)}≡1(mod\ n) aφ(n)1(mod n)
证明:设 S 1 = { r 1 , r 2 . . . r φ ( n ) } S1 = \left \{r_1,r_2...r_{φ(n)} \right \} S1={r1,r2...rφ(n)} m o d   n mod\ n mod n既约剩余系
              S 2 = { a r 1 , a r 2 . . . a r φ ( n ) } \ \ \ \ \ \ \ \ \ \ \ \ \ S2 = \left \{ar_1,ar_2...ar_{φ(n)} \right \}              S2={ar1,ar2...arφ(n)}
∏ i = 1 φ ( n ) a ∗ r i ≡ ∏ i = 1 φ ( n ) r i     ( m o d   n ) ∏^{φ(n)}_{i=1}a*r_i ≡ ∏^{φ(n)}_{i=1}r_i\ \ \ (mod\ n) i=1φ(n)arii=1φ(n)ri   (mod n)

↓ ↓

a φ ( n ) ∏ i = 1 φ ( n ) r i ≡ ∏ i = 1 φ ( n ) r i     ( m o d   n ) a^{φ(n)}∏_{i=1}^{φ(n)}r_i≡∏_{i=1}^{φ(n)}r_i\ \ \ (mod\ n) aφ(n)i=1φ(n)rii=1φ(n)ri   (mod n)

↓ ↓

n ∣ ( a φ ( n ) ∏ i = 1 φ ( n ) r i − ∏ i = 1 φ ( n ) r i ) n|(a^{φ(n)}∏_{i=1}^{φ(n)}r_i - ∏_{i=1}^{φ(n)}r_i) n(aφ(n)i=1φ(n)rii=1φ(n)ri)

↓ ↓

n ∣ ( ( a φ ( n ) − 1 ) ∗ ∏ i = 1 φ ( n ) r i ) n|((a^{φ(n)}-1) *∏_{i=1}^{φ(n)}r_i) n((aφ(n)1)i=1φ(n)ri)

∵ g c d ( n , ∏ i = 1 φ ( n ) r i ) → n 不整除 ∏ i = 1 φ ( n ) r i ∵gcd(n, ∏_{i=1}^{φ(n)}r_i)→n不整除∏_{i=1}^{φ(n)}r_i gcd(n,i=1φ(n)ri)n不整除i=1φ(n)ri

↓ ↓

n ∣ ( a φ ( n ) − 1 ) n|(a^{φ(n)}-1) n(aφ(n)1)

↓ ↓

a φ ( n ) ≡ 1 ( m o d   n ) a^{φ(n)}≡1(mod\ n) aφ(n)1(mod n)


费马小定理

P P P是质数,则对于任意整数 a a a,有 a P ≡ a ( m o d   p ) a^P≡a(mod\ p) aPa(mod p)
证明

  1. g c d ( a , p ) = 1 → a φ ( P ) ≡ 1 ( m o d   p ) gcd(a,p)=1→a^{φ(P)}≡1(mod\ p) gcd(a,p)=1aφ(P)1(mod p)
                                → a p − 1 ≡ 1 ( m o d   p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →a^{p-1}≡1(mod\ p)                            ap11(mod p)(看↑欧拉函数)
                                → a p ≡ a ( m o d   p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →a^p≡a(mod\ p)                            apa(mod p)(两边同乘 a a a)
  2. g c d ( a , p ) ≠ 1 gcd(a,p)≠1 gcd(a,p)=1,即 a a a p p p的倍数
    a p % p = 0 a^p\%p = 0 ap%p=0 a % p = 0 a\%p=0 a%p=0
                ↓ \ \ \ \ \ \ \ \ \ \ \ ↓            
    a p ≡ a ( m o d   p ) a^p≡a(mod\ p) apa(mod p)

扩展欧几里得

裴蜀定理(贝祖定理)
                  / \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ /                  /对于任意整数 a a a b b b,存在一对整数 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)
****************************************************** (分割线)************************************************************
!求!解!

  • 特解
  1. b = 0 → x = 1 , y = 0 b=0→x=1, y=0 b=0x=1,y=0(注意这里的y可以是任何数,但是我们取其中一解)
               → a ∗ 1 + 0 ∗ 0 = g c d ( a , 0 ) \ \ \ \ \ \ \ \ \ \ →a*1+0*0=gcd(a,0)           a1+00=gcd(a,0)
  2. b > 0 b>0 b>0 g c d ( a , b ) = g c d ( b , a % b ) gcd(a,b) = gcd(b,a\%b) gcd(a,b)=gcd(b,a%b)
                           ↓                    ↓ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ↓\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ↓                                         
                     a x + b y = b x ′ + ( a % b ) y ′ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ax+by = bx'+(a\%b)y'                 ax+by=bx+(a%b)y
                                   = b x ′ + ( a − ⌊ a b ⌋ ∗ b ) y ′ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ = bx'+(a-\left \lfloor \frac{a}{b} \right \rfloor*b)y'                               =bx+(abab)y
                                   = a y ′ + b x ′ − ⌊ a b ⌋ ∗ b ∗ y ′ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =ay'+bx'-\left \lfloor \frac{a}{b} \right \rfloor*b*y'                               =ay+bxbaby
                                   = a y ′ + b ( x ′ − ⌊ a b ⌋ ∗ y ′ ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =ay'+b(x'-\left \lfloor \frac{a}{b} \right \rfloor*y')                               =ay+b(xbay)
    x = y ′ , y = x ′ − ⌊ a b ⌋ ∗ y ′ x=y',y=x'-\left \lfloor \frac{a}{b} \right \rfloor*y' x=y,y=xbay

------------------------------------------------------------(xiao分界线)-------------------------------------------------------------------------

  • 通解
    x 0 x_0 x0 y 0 y_0 y0 a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b)一组解
    x = x 0 + b g c d ( a , b ) ∗ t , y = y 0 + a g c d ( a , b ) ∗ t x = x_0 + \frac{b}{gcd(a,b)}*t,y = y_0 + \frac{a}{gcd(a,b)}*t x=x0+gcd(a,b)bty=y0+gcd(a,b)at
    t t t为任意整数

    证明
    a ∗ x 0 + b ∗ y 0 = g c d ( a , b ) a*x_0 + b*y_0 = gcd(a,b) ax0+by0=gcd(a,b)
    x 0 x_0 x0 y 0 y_0 y0分别偏移 k 1 k_1 k1 k 2 k_2 k2
    a ( x 0 + k 1 ) + b ( y 0 − k 2 ) = g c d ( a , b ) → a a(x_0+k_1)+b(y_0-k_2)=gcd(a,b)→a a(x0+k1)+b(y0k2)=gcd(a,b)a增加 b b b相应减少
        a ∗ x 0 + a ∗ k 1 + b ∗ y 0 − b ∗ k 2 = g c d ( a , b ) \ \ \ a*x_0+a*k_1+b*y_0-b*k_2=gcd(a,b)    ax0+ak1+by0bk2=gcd(a,b)
    k 1 k_1 k1 b b b k 2 k_2 k2 a a a
        a ∗ x 0 + a ∗ b + b ∗ y 0 − b ∗ a = g c d ( a , b ) \ \ \ a*x_0+a*b+b*y_0-b*a=gcd(a,b)    ax0+ab+by0ba=gcd(a,b)
    再进化(bushi ,偏移一下, k 1 k_1 k1 b g c d ( a , b ) \frac{b}{gcd(a,b)} gcd(a,b)b k 2 k_2 k2 a g c d ( a , b ) \frac{a}{gcd(a,b)} gcd(a,b)a
    a ∗ x 0 + a ∗ b g c d ( a , b ) + b ∗ y 0 − a ∗ b g c d ( a , b ) = g c d ( a , b ) a*x_0+\frac{a*b}{gcd(a,b)}+b*y_0-\frac{a*b}{gcd(a,b)}=gcd(a,b) ax0+gcd(a,b)ab+by0gcd(a,b)ab=gcd(a,b)

    k 1 k_1 k1 k 2 k_2 k2可以继续进化(bushi,偏移,就是 ∗ t *t t

****************************************************** (分割线)************************************************************

最小非负整数解
找到一个 i i i,满足 x 0 − b g c d ( a , b ) ∗ i > 0 x_0-\frac{b}{gcd(a,b)}*i>0 x0gcd(a,b)bi>0 x 0 − b g c d ( a , b ) ∗ ( i + 1 ) < 0 x_0-\frac{b}{gcd(a,b)}*(i+1)<0 x0gcd(a,b)b(i+1)<0

a − b c > 0 a-bc>0 abc>0 a − b ( c + 1 ) < 0 a-b(c+1)<0 ab(c+1)<0 c = a % b c = a \%b c=a%b
(上面特解那拆 ( a % b ) y ′ (a\%b)y' (a%b)y也是这么拆的哦)

因为 x 0 x_0 x0可能是负数,所以把式子转换成 x = ( x 0 % b g c d ( a , b ) + b g c d ( a , b ) ) % b g c d ( a , b ) x = (x_0 \%\frac{b}{gcd(a,b)} + \frac{b}{gcd(a,b)})\%\frac{b}{gcd(a,b)} x=(x0%gcd(a,b)b+gcd(a,b)b)%gcd(a,b)b
为了简便一点, b g c d ( a , b ) = L \frac{b}{gcd(a,b)}=L gcd(a,b)b=L,则 x = ( x 0 % L + L ) x=(x_0\%L+L)%L x=(x0%L+L)
****************************************************** (分割线)************************************************************
求解不定方程ax+by=n

  1. 判断方程 a ∗ x + b ∗ y = n a*x+b*y=n ax+by=n是否有整数解,有解的条件是 g c d ( a , b ) ∣ n gcd(a,b)|n gcd(a,b)n
  2. 用扩展欧几里得算法求 a ∗ x + b ∗ y = g c d ( a , b ) a*x+b*y=gcd(a,b) ax+by=gcd(a,b)的一个解 x 0 x_0 x0 y 0 y_0 y0
  3. a ∗ x 0 + b ∗ y 0 = n a*x_0+b*y_0=n ax0+by0=n两边同乘 n g c d ( a , b ) \frac{n}{gcd(a,b)} gcd(a,b)n,得 a ∗ x 0 ∗ n g c d ( a , b ) + b ∗ y 0 ∗ n g c d ( a , b ) = n a*x_0*\frac{n}{gcd(a,b)}+b*y_0*\frac{n}{gcd(a,b)}=n ax0gcd(a,b)n+by0gcd(a,b)n=n
  4. 对照 a x + b y = n ax+by=n ax+by=n,得其中一解 x ′ , y ′ x',y' x,y x ′ = x 0 ∗ n g c d ( a , b ) x'=x_0*\frac{n}{gcd(a,b)} x=x0gcd(a,b)n y ′ = y 0 ∗ n g c d ( a , b ) y'=y_0*\frac{n}{gcd(a,b)} y=y0gcd(a,b)n
  5. 为了简便一点, d = g c d ( a , b ) d=gcd(a,b) d=gcd(a,b),则 a x + b y = n ax+by=n ax+by=n的通解可以表示为
    x = x ′ + b d x=x'+\frac{b}{d} x=x+db*t, y = y ′ − a d ∗ t y=y'-\frac{a}{d}*t y=ydat(看上求通解那)

线性同余方程

给定整数 a ,   b ,   m a,\ b,\ m a, b, m,求一个整数 x x x满足 a ∗ x ≡ b ( m o d   m ) a*x≡b(mod\ m) axb(mod m),或者给出无解。因为未知数的指数为1,我们称之为一次同余方程,也成线性同余方程
****************************************************** (分割线)************************************************************
求解
a ∗ x ≡ b ( m o d   m )   → m ∣ ( a ∗ x − b ) a*x≡b(mod\ m)\ →m|(a*x-b) axb(mod m) m(axb)
                                  → a ∗ x − b = m ∗ y \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →a*x-b=m*y                                  axb=my
                                  → a ∗ x + m ∗ y = b \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →a*x+m*y=b                                  ax+my=b
变成一个不定方程啦
g c d ( a , m ) ∣ b gcd(a,m)|b gcd(a,m)b时有解,否则无解
------------------------------------------------------------(xiao分界线)-------------------------------------------------------------------------
(太难了)

void mod_slover(int a, int b, int m) {
	int d, x, y, e, i;
	d = ex_gcd(a, m, x, y); //计算a, m的最大公约数d和满足d = a * x + m * y的x
	if (b % d != 0)
		printf("no answer!");
	else
		e = x * (b / d) % m; //计算第一个解(x')
	for (int t = 0; t < d; t++)
		printf("%d, (e + (m / d) * t) % m);
}

乘法逆元

若整数 b b b m m m互质,并且 b ∣ a b|a ba,则存在一个整数 x x x,使得 a b ≡ a ∗ x ( m o d   m ) \frac{a}{b}≡a*x(mod\ m) baax(mod m)
x x x b b b的模 m m m的乘法逆元,记为 b − 1 ( m o d   m ) b^{-1}(mod\ m) b1(mod m)
注意1:这里 b − 1 b^{-1} b1并不是 1 b \frac{1}{b} b1的意思,只是个记法,并不是幂的意思(但是貌似是按照幂来用的)
注意2:0没有逆元
******************************************************* (分割线)****************************************************************
求逆元

  • ∵ a b ≡ ( a ∗ x ≡ ) a / b ∗ b ∗ b − 1 ( m o d   m ) ∵\frac{a}{b}≡(a*x≡)a/b*b*b^{-1}(mod\ m) ba(ax)a/bbb1(mod m)
    ∴ b ∗ b − 1 ≡ 1 ( m o d   m ) ∴b*b^{-1}≡1(mod\ m) bb11(mod m)
    ∴ b ∗ x ≡ 1 ( m o d   m ) ∴b*x≡1(mod\ m) bx1(mod m)
    于是它又巴啦啦变身(bushi 成了线性同余方程

  • 如果 m m m是质数,并且 b < m b<m b<m,根据费马小定理 b m − 1 ≡ 1 ( m o d   m ) b^{m-1}≡1(mod\ m) bm11(mod m),则 b ∗ b m − 2 ≡ 1 ( m o d   m ) b*b^{m-2}≡1(mod\ m) bbm21(mod m)
    所以 b b b的模 m m m逆元为 b m − 2 b^{m-2} bm2

****************************************************** (分割线)************************************************************

线性求逆元
i < p i<p i<p时,有递推式 i n v [ i ] = ( p   −   p   /   i ) ∗ i n v [ p   %   i ]   %   p inv[i] = (p\ -\ p\ /\ i) * inv[p\ \%\ i]\ \%\ p inv[i]=(p  p / i)inv[p % i] % p
i n v [ 0 ] = 0 inv[0] = 0 inv[0]=0 //0没有逆元
p = k ∗ i + r ( k = ⌊ p i ⌋ , r = p   %   i ) p = k * i + r(k = \left \lfloor \frac{p}{i} \right \rfloor,r=p\ \%\ i) p=ki+rk=ipr=p % i
p   %   p = 0 → ( k ∗ i + r )   % p   = 0 p\ \%\ p=0 → (k * i + r)\ \% p\ =0 p % p=0(ki+r) %p =0
                   → k ∗ i + r ≡ 0 ( m o d   p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →k*i+r≡0(mod\ p)                   ki+r0(mod p)
                   → k ∗ i ∗ i − 1 + r ∗ i − 1 ≡ 0 ( m o d   p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →k*i*i^{-1}+r*i^{-1}≡0(mod\ p)                   kii1+ri10(mod p)
                   → r ∗ i − 1 ≡ − k ( m o d   p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →r*i^{-1}≡-k(mod\ p)                   ri1k(mod p) k k k是移项过去的-_-||,要变号)
                   → r ∗ r − 1 ∗ i − 1 ≡ − k ∗ r − 1 ( m o d   p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →r*r^{-1}*i^{-1}≡-k*r^{-1}(mod\ p)                   rr1i1kr1(mod p)
                   → i − 1 ≡ − k ∗ r − 1 ( m o d   p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →i^{-1}≡-k*r^{-1}(mod\ p)                   i1kr1(mod p)
                   → i − 1 ≡ − ⌊ p i ⌋ ∗ ( p   %   i ) − 1 ( m o d   p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →i^{-1}≡-\left \lfloor \frac{p}{i} \right \rfloor*(p\ \%\ i)^{-1}(mod\ p)                   i1ip(p % i)1(mod p)
                   → i − 1 ≡ ( p − ⌊ p i ⌋ ) ∗ ( p   %   i ) − 1 ( m o d   p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →i^{-1}≡(p - \left \lfloor \frac{p}{i} \right \rfloor)*(p\ \%\ i)^{-1}(mod\ p)                   i1(pip)(p % i)1(mod p)
i n v [ i ]   =   ( p   −   p i ) ∗ i n v [ p   %   i ]   %   p inv[i]\ =\ (p\ -\ \frac{p}{i})*inv[p\ \%\ i]\ \%\ p inv[i] = (p  ip)inv[p % i] % p
****************************************************** (分割线)************************************************************
乘法逆元的应用
对于 a b   m o d   m \frac{a}{b}\ mod\ m ba mod m的计算,当 a a a b b b都是很大的数时,做除法后取模会损失精度,利用乘法逆元可以避开除法运算
b b b m o d   m mod\ m mod m逆元为 k k k,有:
a b   m o d   m = ( a b   m o d   m ) ( b k   m o d   m ) \frac{a}{b}\ mod\ m = (\frac{a}{b}\ mod\ m)(bk\ mod\ m) ba mod m=(ba mod m)(bk mod m)
                  = ( a b ∗ b ∗ k ) m o d   m \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =(\frac{a}{b}*b*k)mod\ m                  =(babk)mod m
                  = ( a ∗ k ) m o d   m \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =(a*k)mod\ m                  =(ak)mod m
在一些组合数学中常用这种方式


中国剩余定理(crt)

今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何
→ → 有个玩意儿(bushi 不知道有多少,3个3个分剩2个,5个5个分剩3个,7个7个分剩2个
→ → 一个整数 x x x x % 3 = 2 x\%3=2 x%3=2 x % 5 = 3 x\%5 = 3 x%5=3 x % 4 = 2 x\%4 = 2 x%4=2
→ → 求同余方程组 { x ≡ 2 ( m o d   3 ) x ≡ 3 ( m o d   5 ) x ≡ 2 ( m o d   7 ) \left\{\begin{matrix}x≡2(mod\ 3) \\x≡3(mod\ 5) \\x≡2(mod\ 7) \end{matrix}\right. x2(mod 3)x3(mod 5)x2(mod 7)
******************************************************* (分割线)****************************************************************
求解(这道题)

  1. 设它们的解分别为 { a 1 a 2 a 3 \left\{\begin{matrix}a_1 \\a_2 \\a_3 \end{matrix}\right. a1a2a3
    满足 { a 1 ≡ 2 ( m o d   3 ) a 2 ≡ 3 ( m o d   5 ) a 3 ≡ 2 ( m o d   7 ) \left\{\begin{matrix}a_1≡2(mod\ 3) \\a_2≡3(mod\ 5) \\a_3≡2(mod\ 7) \end{matrix}\right. a12(mod 3)a23(mod 5)a32(mod 7)
    ------------------------------------------------------------(xiao分界线)-------------------------------------------------------------------------

  2. 最小整数解为 ( a 1 + a 2 + a 3 ) % ( M ) (a_1 + a_2 + a_3)\%(M) (a1+a2+a3)%(M) ( M M M是3,5,7的公倍数)
    设方程组的通解为( a 1 + a 2 + a 3 a_1+a_2+a_3 a1+a2+a3)
    那么满足 { a 1 + a 2 + a 3 ≡ 2 ( m o d   3 ) a 1 + a 2 + a 3 ≡ 3 ( m o d   5 ) a 1 + a 2 + a 3 ≡ 2 ( m o d   7 ) \left\{\begin{matrix}a_1 + a_2 + a_3≡2(mod\ 3) \\a_1 + a_2 + a_3≡3(mod\ 5) \\a_1 + a_2 + a_3≡2(mod\ 7) \end{matrix}\right. a1+a2+a32(mod 3)a1+a2+a33(mod 5)a1+a2+a32(mod 7)
    ------------------------------------------------------------(xiao分界线)-------------------------------------------------------------------------

  3. 对应到上面的解
    必须满足 { a 2 ≡ 0 ( m o d   3 ) a 3 ≡ 0 ( m o d   3 ) a 1 ≡ 0 ( m o d   5 ) a 3 ≡ 0 ( m o d   5 ) a 1 ≡ 0 ( m o d   7 ) a 2 ≡ 0 ( m o d   7 ) \left\{\begin{matrix}a_2≡0(mod\ 3) \\a_3≡0(mod\ 3) \\a_1≡0(mod\ 5) \\a_3≡0(mod\ 5) \\a_1≡0(mod\ 7) \\a_2≡0(mod\ 7) \end{matrix}\right. a20(mod 3)a30(mod 3)a10(mod 5)a30(mod 5)a10(mod 7)a20(mod 7)
    整理一下
    { a 1 ≡ 0 ( m o d   5 ) a 1 ≡ 0 ( m o d   7 ) a 2 ≡ 0 ( m o d   3 ) a 2 ≡ 0 ( m o d   7 ) a 3 ≡ 0 ( m o d   3 ) a 3 ≡ 0 ( m o d   5 ) \left\{\begin{matrix}a_1≡0(mod\ 5) \\a_1≡0(mod\ 7) \\a_2≡0(mod\ 3) \\a_2≡0(mod\ 7) \\a_3≡0(mod\ 3) \\a_3≡0(mod\ 5) \end{matrix}\right. a10(mod 5)a10(mod 7)a20(mod 3)a20(mod 7)a30(mod 3)a30(mod 5)
    ------------------------------------------------------------(xiao分界线)-------------------------------------------------------------------------

  4. { a 1 = 5 ∗ 7 ∗ k 1 → 35 ∣ a 1 a 2 = 3 ∗ 7 ∗ k 2 → 21 ∣ a 2 a 3 = 3 ∗ 5 ∗ k 3 → 15 ∣ a 3 \left\{\begin{matrix}a_1 = 5 * 7*k_1→35|a_1 \\a_2 = 3*7*k_2→21|a_2 \\a_3 = 3*5*k_3→15|a_3 \end{matrix}\right. a1=57k135∣a1a2=37k221∣a2a3=35k315∣a3
    ------------------------------------------------------------(xiao分界线)-------------------------------------------------------------------------

  5. 对应开始的同余方程
    { a 1 → ( 35 ∗ k 1 ) % 3 = 2 → 35 ∗ k 1 ≡ 2 ( m o d   3 ) a 2 → ( 21 ∗ k 2 ) % 5 = 3 → 21 ∗ k 2 ≡ 3 ( m o d   5 ) a 3 → ( 15 ∗ k 3 ) % 7 = 2 → 15 ∗ k 3 ≡ 2 ( m o d   7 ) \left\{\begin{matrix}a_1 → (35*k_1)\%3=2→35*k_1≡2(mod\ 3) \\a_2 →(21*k_2)\%5=3 →21*k_2≡3(mod\ 5) \\a_3 → (15*k_3)\%7=2→15*k_3≡2(mod\ 7) \end{matrix}\right. a1(35k1)%3=235k12(mod 3)a2(21k2)%5=321k23(mod 5)a3(15k3)%7=215k32(mod 7)
    ------------------------------------------------------------(xiao分界线)-------------------------------------------------------------------------

  6. 发现 k 1 , k 2 , k 3 k_1,k_2,k_3 k1,k2,k3 = 1 =1 =1
    { a 1 = 35 a 2 = 63 a 3 = 30 \left\{\begin{matrix}a_1=35 \\a_2=63 \\a_3=30 \end{matrix}\right. a1=35a2=63a3=30
    ------------------------------------------------------------(xiao分界线)-------------------------------------------------------------------------

  7. 最小整数解为 ( 35 + 63 + 30 ) % 105 = 128 % 105 = 23 (35+63+30)\%105=128\%105=23 (35+63+30)%105=128%105=23

解完了ヾ(@^ ▽ ^@)ノ

******************************************************* (分割线)****************************************************************
求解(通解)
m 1 , m 2 , . . . , m n m_1,m_2,...,m_n m1,m2,...,mn是两两互质的整数(模数), M = ∏ i = 1 n m i M=∏^n_{i=1}m_i M=i=1nmi( M M M是模数的公倍数)
l c m i = M m i lcm_i = \frac{M}{m_i} lcmi=miM( l c m i lcm_i lcmi是除 m i m_i mi之外的其余的 m m m的公倍数)(就是上面2,3,4步找的那个倍数)
t i t_i ti l c m i lcm_i lcmi关于模 m i m_i mi的倒数,就是 t i = l c m i − 1 t_i={lcm_i}^{-1} ti=lcmi1
{ x ≡ g 1 ( m o d   m 1 ) x ≡ g 2 ( m o d   m 2 ) . . . x ≡ g n ( m o d   m n ) \left\{\begin{matrix}x≡g_1(mod\ m_1) \\ x≡g_2(mod\ m_2) \\ ... \\ x≡g_n(mod\ m_n) \end{matrix}\right. xg1(mod m1)xg2(mod m2)...xgn(mod mn)
x = ∑ i = 1 n g i ∗ l c m i ∗ t i x=∑^n_{i=1}g_i*lcm_i*t_i x=i=1ngilcmiti
这个 t i t_i ti理解了好久o(╥﹏╥)o
l c m i ∗ t i ≡ 1 ( m o d   m i ) lcm_i*t_i≡1(mod\ m_i) lcmiti1(mod mi)
→ g i ∗ l c m i ∗ t i ≡ g i ( m o d   m i ) →g_i*lcm_i*t_i≡g_i(mod\ mi) gilcmitigi(mod mi)
x ≡ g i ( m o d   m i ) x≡g_i(mod\ mi) xgi(mod mi)
等量代换就可以得出式子啦


✿✿ヽ(°▽°)ノ✿肝完了
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值