Something Unimportan
//温馨提示1:如果分割线很奇怪的话,记得调一下网页缩放
我的网页缩放一直很大sorry
//温馨提示2:有一天zzl因为数论太烂,回来学习自己的博客,发现即看不懂而且可能很有问题
同余及之后的笔记做的很潦草,很多地方也是个人性简化,不一定标准严格
当然,我后来又去看录屏对着打
质数
-
质数无穷多证明
反证:假设质数有 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是质数 -
π ( 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 -
唯一分解定理
N = P 1 c 1 ∗ P 2 c 2 ∗ . . . ∗ P m c m N = P_1^{c1}*P_2^{c2}*...*P_m^{cm} N=P1c1∗P2c2∗...∗Pmcm
- 筛素数
试除法 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=P1c1∗P2c2∗...∗Pmcm(唯一分解定理)
设
n
=
p
∗
q
n = p * q
n=p∗q,且
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)=n−pn−qn+pqn(容斥)
=
n
(
1
−
1
p
−
1
q
+
1
p
q
)
\ \ \ \ \ \ \ \ \ \ \ \ \ =n(1 - \frac{1}{p} - \frac{1}{q} + \frac{1}{pq})
=n(1−p1−q1+pq1)
=
n
∗
(
1
−
1
p
)
(
1
−
1
q
)
\ \ \ \ \ \ \ \ \ \ \ \ \ =n*(1-\frac{1}{p})(1-\frac{1}{q})
=n∗(1−p1)(1−q1)
由此可得,
φ
(
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∗(1−p11)(1−p21)...(1−pm1)
φ
(
n
)
=
n
∗
∏
i
=
1
m
(
1
−
1
p
i
)
φ(n) = n * \prod_{i=1}^m(1 - \frac{1}{p_i})
φ(n)=n∗i=1∏m(1−pi1)
注意:防止溢出,
n
n
n先除
P
i
P_i
Pi再乘
P
i
−
1
P_i-1
Pi−1
****************************************************** (分割线)************************************************************
- φ ( 1 ) = 1 φ(1) = 1 φ(1)=1
- 当 p p p是质数时, φ ( p ) = p − 1 φ(p) = p - 1 φ(p)=p−1
- 当 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)=pk−pk−1=(p−1)∗pk−1
- 对于 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
- 若
n
%
p
=
0
n\%p=0
n%p=0 (也写为
p
∣
n
p|n
p∣n),则
φ
(
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)∗(p−1)
- 若
n
%
p
=
0
n\%p=0
n%p=0 (也写为
p
∣
n
p|n
p∣n),则
φ
(
n
p
)
=
φ
(
n
)
∗
p
φ(np) = φ(n) * p
φ(np)=φ(n)∗p
- 对于 n > 1 n>1 n>1, 1 ∼ n 1∼n 1∼n中与 n n n互质的数的和为 n ∗ φ ( n ) / 2 n*φ(n)/2 n∗φ(n)/2
-
n
=
∑
d
∣
n
φ
(
d
)
n = ∑_{d|n} φ(d)
n=d∣n∑φ(d)(当
a
a
a%
b
b
b=0,即
a
a
a是
b
b
b倍数,称为
b
b
b整除
a
a
a,记作
b
∣
a
b|a
b∣a,上面
p
∣
n
p|n
p∣n也是哦)
证明老师没讲,去找了个博客
同余
- a % m = b % m → a ≡ b ( m o d m ) a\%m = b\%m → a≡b(mod\ m) a%m=b%m→a≡b(mod m)
- 整数的集合被分为m(余有
0
∼
m
−
1
0∼ m-1
0∼m−1)个不同的集合,称为模
m
m
m剩余类(又称同余类),每一个集合中的元素同余
- [ 0... m − 1 ] → m o d m [0...m-1] →mod\ m [0...m−1]→mod m标准剩余系
- [ a 1 , a 2 . . . a φ ( m ) ] [a_1,a_2...a_{φ(m)}] [a1,a2...aφ(m)]中 a i a_i ai与 m m m互质 → → →既约剩余系
****************************************************** (分割线)************************************************************
- a ≡ b ( m o d m ) a ≡ b(mod\ m) a≡b(mod m),当且仅当 m ∣ ( a − b ) m|(a-b) m∣(a−b)
- a ≡ b ( m o d m ) a ≡ b(mod\ m) a≡b(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) a≡b(mod m),则 a + c ≡ b + c ( m o d m ) a+c≡b+c(mod\ m) a+c≡b+c(mod m)
- a ≡ b ( m o d m ) a≡b(mod\ m) a≡b(mod m),则 a ∗ c ≡ b ∗ c ( m o d m ) a *c≡b*c(mod\ m) a∗c≡b∗c(mod m)
- a ≡ b ( m o d m ) a≡b(mod\ m) a≡b(mod m),则 a c ≡ b c ( m o d m ) a^c≡b^c(mod\ m) ac≡bc(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) ca≡cb(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)a∗ri≡i=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)ri≡i=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)ri−i=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)
aP≡a(mod p)
证明:
- 当
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)=1→aφ(P)≡1(mod p)
→ a p − 1 ≡ 1 ( m o d p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →a^{p-1}≡1(mod\ p) →ap−1≡1(mod p)(看↑欧拉函数)
→ a p ≡ a ( m o d p ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →a^p≡a(mod\ p) →ap≡a(mod p)(两边同乘 a a a) - 当
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) ap≡a(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)
****************************************************** (分割线)************************************************************
!求!解!
- 特解
-
b
=
0
→
x
=
1
,
y
=
0
b=0→x=1, y=0
b=0→x=1,y=0(注意这里的y可以是任何数,但是我们取其中一解)
→ a ∗ 1 + 0 ∗ 0 = g c d ( a , 0 ) \ \ \ \ \ \ \ \ \ \ →a*1+0*0=gcd(a,0) →a∗1+0∗0=gcd(a,0) -
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′+(a−⌊ba⌋∗b)y′
= a y ′ + b x ′ − ⌊ a b ⌋ ∗ b ∗ y ′ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =ay'+bx'-\left \lfloor \frac{a}{b} \right \rfloor*b*y' =ay′+bx′−⌊ba⌋∗b∗y′
= a y ′ + b ( x ′ − ⌊ a b ⌋ ∗ y ′ ) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =ay'+b(x'-\left \lfloor \frac{a}{b} \right \rfloor*y') =ay′+b(x′−⌊ba⌋∗y′)
得 x = y ′ , y = x ′ − ⌊ a b ⌋ ∗ y ′ x=y',y=x'-\left \lfloor \frac{a}{b} \right \rfloor*y' x=y′,y=x′−⌊ba⌋∗y′
------------------------------------------------------------(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)b∗t,y=y0+gcd(a,b)a∗t
t t t为任意整数证明
a ∗ x 0 + b ∗ y 0 = g c d ( a , b ) a*x_0 + b*y_0 = gcd(a,b) a∗x0+b∗y0=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(y0−k2)=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) a∗x0+a∗k1+b∗y0−b∗k2=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) a∗x0+a∗b+b∗y0−b∗a=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) a∗x0+gcd(a,b)a∗b+b∗y0−gcd(a,b)a∗b=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
x0−gcd(a,b)b∗i>0且
x
0
−
b
g
c
d
(
a
,
b
)
∗
(
i
+
1
)
<
0
x_0-\frac{b}{gcd(a,b)}*(i+1)<0
x0−gcd(a,b)b∗(i+1)<0
a
−
b
c
>
0
a-bc>0
a−bc>0且
a
−
b
(
c
+
1
)
<
0
a-b(c+1)<0
a−b(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
- 判断方程 a ∗ x + b ∗ y = n a*x+b*y=n a∗x+b∗y=n是否有整数解,有解的条件是 g c d ( a , b ) ∣ n gcd(a,b)|n gcd(a,b)∣n
- 用扩展欧几里得算法求 a ∗ x + b ∗ y = g c d ( a , b ) a*x+b*y=gcd(a,b) a∗x+b∗y=gcd(a,b)的一个解 x 0 x_0 x0, y 0 y_0 y0
- a ∗ x 0 + b ∗ y 0 = n a*x_0+b*y_0=n a∗x0+b∗y0=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 a∗x0∗gcd(a,b)n+b∗y0∗gcd(a,b)n=n
- 对照 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′=x0∗gcd(a,b)n, y ′ = y 0 ∗ n g c d ( a , b ) y'=y_0*\frac{n}{gcd(a,b)} y′=y0∗gcd(a,b)n
为了简便一点,设 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=y′−da∗t(看上求通解那)
线性同余方程
给定整数
a
,
b
,
m
a,\ b,\ m
a, b, m,求一个整数
x
x
x满足
a
∗
x
≡
b
(
m
o
d
m
)
a*x≡b(mod\ m)
a∗x≡b(mod m),或者给出无解。因为未知数的指数为1,我们称之为一次同余方程,也成线性同余方程
****************************************************** (分割线)************************************************************
求解
a
∗
x
≡
b
(
m
o
d
m
)
→
m
∣
(
a
∗
x
−
b
)
a*x≡b(mod\ m)\ →m|(a*x-b)
a∗x≡b(mod m) →m∣(a∗x−b)
→
a
∗
x
−
b
=
m
∗
y
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →a*x-b=m*y
→a∗x−b=m∗y
→
a
∗
x
+
m
∗
y
=
b
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →a*x+m*y=b
→a∗x+m∗y=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
b∣a,则存在一个整数
x
x
x,使得
a
b
≡
a
∗
x
(
m
o
d
m
)
\frac{a}{b}≡a*x(mod\ m)
ba≡a∗x(mod m)
称
x
x
x为
b
b
b的模
m
m
m的乘法逆元,记为
b
−
1
(
m
o
d
m
)
b^{-1}(mod\ m)
b−1(mod m)
注意1:这里
b
−
1
b^{-1}
b−1并不是
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≡(a∗x≡)a/b∗b∗b−1(mod m)
∴ b ∗ b − 1 ≡ 1 ( m o d m ) ∴b*b^{-1}≡1(mod\ m) ∴b∗b−1≡1(mod m)
∴ b ∗ x ≡ 1 ( m o d m ) ∴b*x≡1(mod\ m) ∴b∗x≡1(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) bm−1≡1(mod m),则 b ∗ b m − 2 ≡ 1 ( m o d m ) b*b^{m-2}≡1(mod\ m) b∗bm−2≡1(mod m)
所以 b b b的模 m m m逆元为 b m − 2 b^{m-2} bm−2
****************************************************** (分割线)************************************************************
线性求逆元
当
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=k∗i+r(k=⌊ip⌋,r=p % i)
p
%
p
=
0
→
(
k
∗
i
+
r
)
%
p
=
0
p\ \%\ p=0 → (k * i + r)\ \% p\ =0
p % p=0→(k∗i+r) %p =0
→
k
∗
i
+
r
≡
0
(
m
o
d
p
)
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →k*i+r≡0(mod\ p)
→k∗i+r≡0(mod p)
→
k
∗
i
∗
i
−
1
+
r
∗
i
−
1
≡
0
(
m
o
d
p
)
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →k*i*i^{-1}+r*i^{-1}≡0(mod\ p)
→k∗i∗i−1+r∗i−1≡0(mod p)
→
r
∗
i
−
1
≡
−
k
(
m
o
d
p
)
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →r*i^{-1}≡-k(mod\ p)
→r∗i−1≡−k(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)
→r∗r−1∗i−1≡−k∗r−1(mod p)
→
i
−
1
≡
−
k
∗
r
−
1
(
m
o
d
p
)
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ →i^{-1}≡-k*r^{-1}(mod\ p)
→i−1≡−k∗r−1(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)
→i−1≡−⌊ip⌋∗(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)
→i−1≡(p−⌊ip⌋)∗(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
=(ba∗b∗k)mod m
=
(
a
∗
k
)
m
o
d
m
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =(a*k)mod\ m
=(a∗k)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.
⎩
⎨
⎧x≡2(mod 3)x≡3(mod 5)x≡2(mod 7)
******************************************************* (分割线)****************************************************************
求解(这道题)
-
设它们的解分别为 { 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. ⎩ ⎨ ⎧a1≡2(mod 3)a2≡3(mod 5)a3≡2(mod 7)
------------------------------------------------------------(xiao分界线)------------------------------------------------------------------------- -
最小整数解为 ( 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+a3≡2(mod 3)a1+a2+a3≡3(mod 5)a1+a2+a3≡2(mod 7)
------------------------------------------------------------(xiao分界线)------------------------------------------------------------------------- -
对应到上面的解
必须满足 { 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. ⎩ ⎨ ⎧a2≡0(mod 3)a3≡0(mod 3)a1≡0(mod 5)a3≡0(mod 5)a1≡0(mod 7)a2≡0(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. ⎩ ⎨ ⎧a1≡0(mod 5)a1≡0(mod 7)a2≡0(mod 3)a2≡0(mod 7)a3≡0(mod 3)a3≡0(mod 5)
------------------------------------------------------------(xiao分界线)------------------------------------------------------------------------- -
即 { 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=5∗7∗k1→35∣a1a2=3∗7∗k2→21∣a2a3=3∗5∗k3→15∣a3
------------------------------------------------------------(xiao分界线)------------------------------------------------------------------------- -
对应开始的同余方程
{ 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→(35∗k1)%3=2→35∗k1≡2(mod 3)a2→(21∗k2)%5=3→21∗k2≡3(mod 5)a3→(15∗k3)%7=2→15∗k3≡2(mod 7)
------------------------------------------------------------(xiao分界线)------------------------------------------------------------------------- -
发现 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分界线)------------------------------------------------------------------------- -
最小整数解为 ( 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=lcmi−1
有
{
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.
⎩
⎨
⎧x≡g1(mod m1)x≡g2(mod m2)...x≡gn(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=1∑ngi∗lcmi∗ti
这个
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)
lcmi∗ti≡1(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)
→gi∗lcmi∗ti≡gi(mod mi)
而
x
≡
g
i
(
m
o
d
m
i
)
x≡g_i(mod\ mi)
x≡gi(mod mi)
等量代换就可以得出式子啦
✿✿ヽ(°▽°)ノ✿肝完了