数论
前言
数论在OI中还是比较重要的,这些笔记是在课上匆忙记下的,可能不太美观。
一些约定:在这里整数间除法是向下取整;(a,b)(a,b)代表gcd(a,b)gcd(a,b)
Problems:
小凯的疑惑
solsol:构造
ax+by=k(a,b>=0)ax+by=k(a,b>=0) 使其无解
设一组解x1∈[0,b−1],y1>=0x1∈[0,b−1],y1>=0
若k>ab−a−bk>ab−a−b
则y1>(k−a∗x1)/b=(ab−a−b−a(b−1))/by1>(k−a∗x1)/b=(ab−a−b−a(b−1))/b =−1=−1
即y1>=0y1>=0
故k=ab−a−bk=ab−a−b是符合条件的最大值
上帝与集合的正确用法--扩展欧拉定理
https://www.lydsy.com/JudgeOnline/problem.php?id=3884
屠龙勇士--扩展中国剩余定理
用f(i)f(i)表示有序三元组(a,b,c)个数,使得a∗b∗c=ia∗b∗c=i,求出f(1)f(1)~f(n)f(n)
sol:i=∏picisol:i=∏pici f(i)=∏Cci+22f(i)=∏C2ci+2 使用扩展欧拉筛
数论之神
Algorithms:
-
线性推逆元:
inv[fac[i]]=inv[fac[i+1]]∗(i+1)inv[fac[i]]=inv[fac[i+1]]∗(i+1)
设p=i∗k+rp=i∗k+r
i∗k+r≡0modpi∗k+r≡0modp
i∗k≡−rmodpi∗k≡−rmodp
r−1∗k≡−i−1modpr−1∗k≡−i−1modp
i−1≡−p/i∗inv[p%i]i−1≡−p/i∗inv[p%i] modpmodp -
中国剩余定理
ExCRT(增量法):若m不互质
x≡amodb−>x=kb+ax≡amodb−>x=kb+a
x≡cmodd−>kb+a≡cmodd−>kb+pd=c−ax≡cmodd−>kb+a≡cmodd−>kb+pd=c−a
条件(c−a)|gcd(b,d)(c−a)|gcd(b,d)
求解后回代即可 -
埃式筛
-
欧拉筛-扩展
-
Miller-Rabi
费马小定理&&二次剩余
-
Pollard-Rho
生日攻击
-
BSGS&&ExBSGS
Other Things:
- ∑Ni=11/i=O(logN)∑i=1N1/i=O(logN)
- Prove:
下界 1/2 * log N
∑Ni=11/i>=1+1/2+1/4+1/4+1/8+1/8+1/8+1/8+...∑i=1N1/i>=1+1/2+1/4+1/4+1/8+1/8+1/8+1/8+...
上界 log N
∑Ni=11/i<=1+1/2+1/2+1/4+1/4+1/4+1/4+...∑i=1N1/i<=1+1/2+1/2+1/4+1/4+1/4+1/4+...
- Prove:
- ∑1/p=O(loglogN)∑1/p=O(loglogN)
- 裴蜀定理: (a,b)|d(a,b)|d is equal to ua+vb=d(u,v∈Z)ua+vb=d(u,v∈Z)
-
扩展欧几里得Exgcd:扩展欧几里得Exgcd:
amodb=a−a/b∗bamodb=a−a/b∗b
ua+vb=gcd(a,b)ua+vb=gcd(a,b)
u′b+v′(amodb)=gcd(a,b)u′b+v′(amodb)=gcd(a,b)
u′b+v′(a−a/b∗b)=gcd(a,b)u′b+v′(a−a/b∗b)=gcd(a,b)
v′a+(u′−a/b∗v′)∗b=gcd(a,b)v′a+(u′−a/b∗v′)∗b=gcd(a,b)
通解:x0=x+t∗b/(a,b)x0=x+t∗b/(a,b) y0=y−t∗a/(a,b)y0=y−t∗a/(a,b) -
(k,m)=d(k,m)=d 且且 ka≡kbmodm−>a≡bmodm/dka≡kbmodm−>a≡bmodm/d
Prove:ka≡kbmodm−>m|(ka−kb)−>m|k(a−b)−>(m/d)|(a−b)Prove:ka≡kbmodm−>m|(ka−kb)−>m|k(a−b)−>(m/d)|(a−b) - 简化剩余系
-
所有0<n<=m,(n,m)=10<n<=m,(n,m)=1的n构成了模m的简化剩余系,简称缩系
记这样n的个数为ϕ(m)ϕ(m) - 如果(m,m′)=1(m,m′)=1,aa取遍模mm缩系,a′a′取遍m'缩系
那么am′+a′mam′+a′m取遍mm′mm′缩系- Prove: 已知(a,m)=1,(a′,m′)=1,(m,m′)=1已知(a,m)=1,(a′,m′)=1,(m,m′)=1
(am′,m)=1,(a′m,m′)=1(am′,m)=1,(a′m,m′)=1
(am′+a′m,m)=1,(a′m+am′,m′)=1(am′+a′m,m)=1,(a′m+am′,m′)=1 //加上另一个数的若干倍仍互质
(am′+a′m,mm′)=1(am′+a′m,mm′)=1 - 所以如果(n,m)=1,ϕ(nm)=ϕ(n)∗ϕ(m)(n,m)=1,ϕ(nm)=ϕ(n)∗ϕ(m)
- Prove: 已知(a,m)=1,(a′,m′)=1,(m,m′)=1已知(a,m)=1,(a′,m′)=1,(m,m′)=1
- phi(pe)=(p−1)∗pe−1=pe∗(1−1/p)phi(pe)=(p−1)∗pe−1=pe∗(1−1/p) p是质数
- Prove:[1,pe]Prove:[1,pe]中与p不互质的数的个数为pe/p=pe−1pe/p=pe−1
ϕ(pe)=pe−pe−1=pe∗(1−1/p)ϕ(pe)=pe−pe−1=pe∗(1−1/p)
- Prove:[1,pe]Prove:[1,pe]中与p不互质的数的个数为pe/p=pe−1pe/p=pe−1
-
计算公式:ϕ(p)=∏ϕ(pcii)=∏(pci∗(1−1/pi))=n∗∏(1−1/pi)ϕ(p)=∏ϕ(pici)=∏(pic∗(1−1/pi))=n∗∏(1−1/pi)
-
-
欧拉定理 如果(a,m)=1,aphi(m)≡1modm(a,m)=1,aphi(m)≡1modm
Prove:Prove:设x取遍m的缩系,则ax取遍m的缩系
∏x=∏axmodm∏x=∏axmodm
∏x=∏x∗aϕ(m)modm∏x=∏x∗aϕ(m)modm //这样的a有phi(m)个
由于(x,m)=1(x,m)=1,保证∏x∏x存在模m意义下的逆元
所以 aϕ(m)≡1modmaϕ(m)≡1modm -
费马小定理 如果(a,m)=1(a,m)=1,且m是个质数 am−1≡1modmam−1≡1modm
-
扩展欧拉定理 如果(a,m)!=1(a,m)!=1 则 ab≡amin(b,b%ϕ(m)+ϕ(m))modmab≡amin(b,b%ϕ(m)+ϕ(m))modm
-
阶
如果gcd(a,m)=1gcd(a,m)=1那么最小的正整数使得ax≡1modmax≡1modm,x称为a模m的阶
性质:x|ϕ(m)x|ϕ(m)
Prove: -
原根
如果g在模m的阶是ϕ(m)ϕ(m),那么称g是模m的原根
性质: 模m意义下的的原根有ϕ(ϕm)个ϕ(ϕm)个 -
积性函数
欧拉函数,莫比乌斯函数,除数函数 -
狄利克雷卷积
满足交换律结合律分配律,可用倍增
(f∗g)(n)=∑d|nf(d)∗g(n/d)(f∗g)(n)=∑d|nf(d)∗g(n/d)
如果f,g是积性函数,f*g也是积性函数
f∗e=ff∗e=f 单位元:e e(1)=1e(1)=1,其他e(i)=0e(i)=0; -
莫比乌斯函数
e(n)=∑d|nmu(d)e(n)=∑d|nmu(d)
Prove:转化为二项式系数后转化 性质: e(n)=mu(n)∗1e(n)=mu(n)∗1
-
莫比乌斯反演
若f(n)=∑d|ng(d)f(n)=∑d|ng(d)
则g(n)=∑d|nmu(d)f(n/d)g(n)=∑d|nmu(d)f(n/d)
Prove:Prove:
f=g∗1f=g∗1 mu∗1=emu∗1=e
f∗mu=g∗1∗muf∗mu=g∗1∗mu
f∗mu=g∗ef∗mu=g∗e
g=f∗mug=f∗mu -> g(n)=∑d|nmu(d)f(n/d)