5986 words
30 minutes
数论

数轮部分#

数论#

这一部分只考虑整数

一些定义#

完全积性函数
ff为完全积性函数,则f(ab)=f(a)f(b)f(ab)=f(a)f(b)
积性函数
ff为积性函数,则在(a,b)=1(a,b)=1时,有f(ab)=f(a)f(b)f(ab)=f(a)f(b)
常见的积性函数
I(n)=1I(n)=1
ε(n)=[n=1]\varepsilon (n)=[n=1]
id(n)=nid(n)=n
φ(n)=i=1n[(i,n)=1]=n(11pi)\varphi (n)=\sum_{i=1}^{n} [(i,n)=1]= n\prod (1-\frac{1}{p_{i}}),pip_{i}nn的唯一分解中互不相同的质数
μ(n)\mu (n)莫比乌斯函数,n=1n=1时,μ(n)=1\mu(n)=1,当nn的唯一分解的质数的次数都为1,μ(n)\mu(n)1-1的质数种类次方,否则μ(n)=0\mu(n)=0
d(n)d(n)表示nn的约数个数
σ(n)\sigma(n)表示nn的约数和
σk(n)\sigma_{k}(n)表示n的约数的kk次方的和(除数函数)

筛法#

埃拉托斯特尼筛法#

埃拉托斯特尼筛法筛素数
主体思想是逐个去掉所有质数的倍数,枚举到的下一个就是质数

int vis[N],pri[N],cnt;
void Eratosthenes(int n){
vis[0]=vis[1]=0;cnt=0;
for(int i=2;i<=n;i++)vis[i]=1;
for (int i=2;i<=n;i++){
if (vis[i]){
pri[cnt++]=i;
if (1ll*i*i>n)continue;
for (int j=i*i;j<=n;j+=i){
vis[j]=0;
}
}
}
}

线性筛(欧拉筛)#

线性筛的主体思想是让每个数都被自己最小的质因数筛掉

void Euler(int n){
cnt=0;
for (int i=2;i<=n;i++)vis[i]=0;
for (int i=2;i<=n;i++){
if (!vis[i])pri[cnt++]=i;
for (int j=1;j<=cnt;j++){
if (1ll*i*pri[j]>n)break;
vis[i*pri[j]]=1;
if (i%pri[j]==0)break;
}
}
}

注意代码中imodpri[j]=0i \mod pri[j] = 0说明已经到了ii的最小质数,如果继续,那么接下来的数就不是被最小的质数筛掉了,以为ii的最小质数是pri[j]pri[j]

用线性筛求一些函数#

φ(n)\varphi(n),设p1p_{1}nn的最小质因子,且n=mp1n=m p_{1}
如果(m,p1)=1(m,p_{1})=1,φ(n)=φ(p1)×φ(m)=(p11)φ(m)\varphi(n)=\varphi(p_{1}) \times \varphi(m)=(p_{1}-1)\varphi(m)
如果(m,p1)1(m,p_{1})\neq1,φ(n)=n(11pi)=mp1(11pi)=p1φ(m)\varphi(n)=n \prod(1-\frac{1}{p_{i}})=mp_{1}\prod(1-\frac{1}{p_{i}})=p_{1}\varphi(m)

int phi[N];
void get_phi(int n){
cnt=0;phi[1]=1;
for (int i=2;i<=n;i++)vis[i]=0;
for (int i=2;i<=n;i++){
if (!vis[i])pri[++cnt]=i,phi[i]=i-1;
for (int j=1;j<=cnt;j++){
if (1ll*i*pri[j]>n)break;
if (i%pri[j]==0){
vis[i*pri[j]]=1;phi[i*pri[j]]=pri[j]*phi[i];
break;
}
vis[i*pri[j]]=1;phi[i*pri[j]]=(pri[j]-1)*phi[i];
}
}
}

μ(n)\mu(n),设p1p_{1}nn的最小质因子,n=mp1n=mp_{1}
μ(pk)=1×[k=1]\mu(p^{k})=-1\times[k=1]
如果(m,p1)=1(m,p_{1})=1,μ(n)=μ(p1)×μ(m)=1×μ(m)\mu(n)=\mu(p_{1})\times\mu(m)=-1\times\mu(m)
如果(m,p1)1(m,p_{1})\neq1,μ(n)=0\mu(n)=0

int mu[N];
void get_mu(int n){
cnt=0;mu[1]=1;
for (int i=2;i<=n;i++)vis[i]=0;
for (int i=2;i<=n;i++){
if (!vis[i])pri[++cnt]=i,mu[i]=-1;
for (int j=1;j<=cnt;j++){
if (1ll*i*pri[j]>n)break;
if (i%pri[j]==0){
vis[i*pri[j]]=1;mu[i*pri[j]]=0;
break;
}
vis[i*pri[j]]=1;mu[i*pri[j]]=-mu[i];
}
}
}

d(n)d(n),设n=piain=\prod p_{i}^{a_{i}},d(n)=(ai+1)d(n)=\prod (a_{i}+1),n=p1mn=p_{1}m,p1p_{1}nn的最小质因子
如果(m,p1)=1(m,p_{1})=1,d(n)=d(p1)d(m)=2d(m)d(n)=d(p_{1})d(m)=2d(m)
如果(m,p1)1(m,p_{1})\neq1,d(n)=d(p1k)d(np1k)d(n)=d(p_{1}^{k})d(\frac{n}{p_{1}^{k}}),p1knp_{1}^{k}||n
我们需要维护kk,即最小质因子的个数,令numinum_{i}ii的最小质因子的个数,则有
如果(m,p1)=1(m,p_{1})=1,d(n)=d(p1)d(m)=2d(m)d(n)=d(p_{1})d(m)=2d(m)numn=1num_{n}=1
如果(m,p1)1(m,p_{1})\neq1,d(n)=d(p1k)d(np1k)=(numm+2)d(m)numm+1=(numn+1)d(m)numnd(n)=d(p_{1}^{k})d(\frac{n}{p_{1}^{k}})=\frac{(num_{m}+2)d(m)}{num_{m}+1}=\frac{(num_{n}+1)d(m)}{num_{n}},numn=numm+1num_{n}=num_{m}+1

int d[N],num[N];
void get_d(int n){
cnt=0;d[1]=1;
for (int i=2;i<=n;i++)vis[i]=0;
for (int i=2;i<=n;i++){
if (!vis[i])pri[++cnt]=i,d[i]=2,num[i]=1;
for (int j=1;j<=cnt;j++){
if (1ll*i*pri[j]>n)break;
if (i%pri[j]==0){
vis[i*pri[j]]=1;num[i*pri[j]]=num[i]+1;d[i*pri[j]]=d[i]*(num[i*pri[j]]+1)/num[i*pri[j]];
break;
}
vis[i*pri[j]]=1;num[i*pri[j]]=1;d[i*pri[j]]=2*d[i];
}
}
}

σ(n)\sigma(n),σ(n)=(1+pi+...+piai)=piai+11pi1\sigma(n)=\prod (1+p_{i}+...+p_{i}^{a_{i}})=\prod \frac{p_{i}^{a_{i}+1}-1}{p_{i}-1},n=mp1n=mp_{1},p1p_{1}nn的最小质因子
gi=t=0numip1tg_{i}=\sum_{t=0}^{num_{i}}p_{1}^{t}
如果(m,p1)=1(m,p_{1})=1,σ(n)=(1+p1)σ(m)\sigma(n)=(1+p_{1})\sigma(m),numn=1num_{n}=1,gn=1+p1g_{n}=1+p_{1}
如果(m,p1)1(m,p_{1})\neq1,σ(n)=σ(p1numm+1)σ(mp1numm)=(p1numm+21)σ(m)p1numm+11=gnσ(m)gm\sigma(n)=\sigma(p_{1}^{num_{m}+1})\sigma(\frac{m}{p_{1}^{num_{m}}})=\frac{(p_{1}^{num_{m}+2}-1)\sigma(m)}{p_{1}^{num_{m}+1}-1}=\frac{g_{n}\sigma(m)}{g_{m}},gn=1+p1gmg_{n}=1+p_{1}g_{m}

int dsum[N],gsum[N];
void get_dsum(int n){
cnt=0;dsum[1]=1;
for (int i=2;i<=n;i++)vis[i]=0;
for (int i=2;i<=n;i++){
if (!vis[i])pri[++cnt]=i,dsum[i]=1+i,gsum[i]=1+i;
for (int j=1;j<=cnt;j++){
if (1ll*i*pri[j]>n)break;
if (i%pri[j]==0){
vis[i*pri[j]]=1;
gsum[i*pri[j]]=pri[j]*gsum[i]+1;
dsum[i*pri[j]]=dsum[i]*(gsum[i*pri[j]])/gsum[i];
break;
}
vis[i*pri[j]]=1;
gsum[i*pri[j]]=1+pri[j];
dsum[i*pri[j]]=(1+pri[j])*dsum[i];
}
}
}

狄利克雷卷积#

(fg)(n)=dnf(d)g(nd)(f*g)(n)=\sum_{d|n} f(d)g(\frac{n}{d})
waitingwaiting

数论分块#

用于计算形如i=1nf(i)g(ni)\sum_{i=1}^{n}f(i)g(\lfloor \frac{n}{i} \rfloor)的式子
若能O(1)O(1)预处理ff的前缀和,则可在O(n)O(\sqrt n)的时间计算上式

一维#

先看简单情况考虑计算i=1nni\sum_{i=1}^{n} \lfloor \frac{n}{i} \rfloor,即为f(i)=1,g(i)=if(i)=1,g(i)=i
我们按照ni=d\lfloor \frac{n}{i} \rfloor=d的值分块,设这块区间为[l,r][l,r]
则有dni<d+1d \leq \frac{n}{i} < d+1 ,取倒数有1d+1<in1d\frac{1}{d+1} < \frac{i}{n} \leq \frac{1}{d},
nd+1+1ind\lfloor\frac{n}{d+1} \rfloor+1 \leq {i} \leq \lfloor\frac{n}{d}\rfloor
右端点为r=nnlr=\lfloor\frac{n}{\lfloor\frac{n}{l}\rfloor}\rfloor

向上取整#

计算i=1nf(i)g(ni)\sum_{i=1}^{n}f(i)g(\lceil \frac{n}{i} \rceil)
注意到 ni=n1i+1\lceil \frac{n}{i} \rceil=\lfloor \frac{n-1}{i} \rfloor+1
i=1nf(i)g(ni)=f(n)g(1)+i=1n1f(i)g(n1i+1)\sum_{i=1}^{n}f(i)g(\lceil \frac{n}{i} \rceil)=f(n)g(1)+\sum_{i=1}^{n-1}f(i)g(\lfloor \frac{n-1}{i} \rfloor+1)

多维#

计算i=1nf(i)g(n1i,n2i,...,nmi)\sum_{i=1}^{n}f(i)g(\lfloor \frac{n_{1}}{i} \rfloor,\lfloor \frac{n_{2}}{i} \rfloor,...,\lfloor \frac{n_{m}}{i} \rfloor)
只需要对一个ll取交集即可,r=mini=1mninilr=min_{i=1}^{m} {\lfloor\frac{n_{i}}{\lfloor\frac{n_{i}}{l}\rfloor}\rfloor}

任意指数#

计算i=1nabf(i)g(naib)\sum_{i=1}^{\lfloor n^{\frac{a}{b}} \rfloor}f(i)g(\lfloor \frac{n^{a}}{i^{b}}\rfloor)
同上可知nab(d+1)1b+1inabd1b\lfloor\frac{n^{\frac{a}{b}}}{(d+1)^{\frac{1}{b}}} \rfloor+1 \leq {i} \leq \lfloor\frac{n^{\frac{a}{b}}}{d^{\frac{1}{b}}}\rfloor
复杂度为O(nab+1)O(n^{\frac{a}{b+1}})

莫比乌斯反演#

普通形式#

首先有恒等式dnμ(d)=[n=1]\sum_{d|n}\mu(d)=[n=1]
n=piein=\prod p_{i}^{e_{i}},n=pin'=\prod p_{i},则dn=i=0k(1)i(ki)=(1+(1))k=[n=1]\sum_{d|n}=\sum_{i=0}^{k}(-1)^{i}\binom{k}{i}=(1+(-1))^{k}=[n=1]
ε=1μ\varepsilon=1*\mu
简单应用[gcd(i,j)=1dgcd(i,j)μ(d)=d[di][dj]μ(d)[gcd(i,j)=1\sum_{d|gcd(i,j)}\mu(d)=\sum_{d}[d|i][d|j]\mu(d)
主要形式f(n)=dng(d)<=>g(n)=dnμ(nd)f(d)f(n)=\sum_{d|n}g(d)<=>g(n)=\sum_{d|n}\mu(\frac{n}{d})f(d),可直接带入验证
上述形式等价与f=1g<=>g=μff=1*g<=>g=\mu*f
μf=μ1g=ϵg=g\mu*f=\mu*1*g=\epsilon*g=g
φ(n)\varphi(n)有,n=dnφ(d)n=\sum_{d|n}\varphi(d),即id=1φid=1*\varphi,则φ=μid\varphi=\mu*id,φ(n)=dndμ(nd)\varphi(n)=\sum_{d|n}d\mu(\frac{n}{d})
σk(n)=dndk\sigma_{k}(n)=\sum_{d|n}d^{k},有σk=1idk\sigma_{k}=1*id_{k},则idk=μσkid_{k}=\mu*\sigma_{k}
对互异素因子数目函数ω(n)=dn[dP]\omega(n)=\sum_{d|n}[d\in P],即ω=11P\omega=1*1_{P},则1P=μω1_{P}=\mu*\omega,[nP]=dμ(nd)ω(d)[n\in P]=\sum_{d}\mu(\frac{n}{d})\omega(d)

拓展形式#

f(n)=ndg(d)<=>g(n)=ndμ(dn)f(d)f(n)=\sum_{n|d}g(d)<=>g(n)=\sum_{n|d}\mu(\frac{d}{n})f(d)
f(n)=dng(d)<=>g(n)=dnf(d)μ(nd)f(n)=\prod_{d|n}g(d)<=>g(n)=\prod_{d|n}f(d)^{\mu(\frac{n}{d})}
f(n)=dnα(nd)g(n)<=>g(n)=dnα1(nd)f(d)f(n)=\sum_{d|n}\alpha(\frac{n}{d})g(n)<=>g(n)=\sum_{d|n}\alpha^{-1}(\frac{n}{d})f(d),即f=αg<=>g=α1ff=\alpha*g<=>g=\alpha^{-1}*f,α1\alpha^{-1}α\alphaDirichletDirichlet
f(n)=i=1ng(ni)<=>g(n)=i=1nμ(i)f(ni)f(n)=\sum_{i=1}^{n}g(\lfloor\frac{n}{i}\rfloor)<=>g(n)=\sum_{i=1}^{n}\mu(i)f(\lfloor\frac{n}{i}\rfloor)

DirichletDirichlet前缀和#

如果将每一个素数都看作一个维度,这就是一种高维前缀和.从小到大遍历所有素数 𝑝,并将 𝑛处的函数值累加到 𝑛𝑝处.这和EratosthenesEratosthenes筛法 的遍历顺序是一致的.因此,这一算法可以在 𝑂(𝑛loglog𝑛)𝑂(𝑛log⁡log⁡𝑛)时间内计算出长度为 𝑛𝑛 的数列的 DirichletDirichlet 前缀和.类似地,利用逐维差分就可以在相同时间复杂度内求出数列的 DirichletDirichlet 差分.

int f[N],g[N];
void di_presum(int n){
for (int i=0;i<=n;i++)vis[i]=0,f[i]=g[i];
for (int i=2;i<=n;i++){
if (vis[i])continue;
for (int j=1,ij=i;i*j<=n;j++,ij+=j){
vis[ij]=1;
f[ij]+=g[j];
}
}
}
void di_diff(int n){
for (int i=0;i<=n;i++)vis[i]=0,g[i]=f[i];
for (int i=2;i<=n;i++){
if (vis[i])continue;
for (int j=n/i,ij=i*j;j>=1;j--,ij-=j){
vis[ij]=1;
g[ij]-=f[j];
}
}
}

杜教筛#

用低于线性的时间求S(n)=i=1nf(i)S(n)=\sum_{i=1}^{n}f(i)
构造一个gg,gg满足g,fgg,f*g的前缀和可以很快的求出
i=1n(fg)(i)=i=1ndif(id)g(d)=i=1ng(i)S(ni)\sum_{i=1}^{n}(f*g)(i)=\sum_{i=1}^{n}\sum_{d|i}f(\frac{i}{d})g(d)=\sum_{i=1}^{n}g(i)S(\lfloor\frac{n}{i}\rfloor),最后一步可以这么理解f,gf,g括号内的乘积都是小于等于nn
g(1)S(n)=i=1n(fg)(i)i=2ng(i)S(ni)g(1)S(n)=\sum_{i=1}^{n}(f*g)(i)-\sum_{i=2}^{n}g(i)S(\lfloor\frac{n}{i}\rfloor)
时间复杂度O(n34)O(n^{\frac{3}{4}})

Min_25筛#

低于线性时间求积性函数前缀和
要求:f(p)f(p)是关于pp的可以快速求值的完全积性函数之和;f(pc)f(p^{c})可以快速求值
pkp_{k}为第kk小的质数,p0=1p_{0}=1
lpf(n)lpf(n)nn的最小质因数,lpf(1)=1lpf(1)=1
Fprime(n)=pnf(p)F_{prime}(n)=\sum_{p\leq n}f(p)
Fk(n)=i=2n[pklpf(i)]f(i)F_{k}(n)=\sum_{i=2}^{n}[p_{k}\leq lpf(i)]f(i)
发现答案即为F1(n)+f(1)F_{1}(n)+f(1)

Fk(n)=i=2n[pklpf(i)]f(i)=ki,pi2nc1,picnf(pic)([c>1]+Fi+1(n/pic))+Fprime(n)Fprime(pk1)=ki,pi2nc1,pic+1n(f(pic+1)+f(pic)Fi+1(n/pic))+Fprime(n)Fprime(pk1)\begin{align} F_{k}(n) &= \sum_{i=2}^{n} [p_{k} \le lpf(i)] f(i) \\ &= \sum_{k \le i,\, p_{i}^{2} \le n} \sum_{c \ge 1,\, p_{i}^{c} \le n} f(p_{i}^{c}) \bigl([c > 1] + F_{i+1}(\lfloor n / p_{i}^{c} \rfloor)\bigr) + F_{\text{prime}}(n) - F_{\text{prime}}(p_{k-1}) \\ &= \sum_{k \le i,\, p_{i}^{2} \le n} \sum_{c \ge 1,\, p_{i}^{c+1} \le n} \bigl(f(p_{i}^{c+1}) + f(p_{i}^{c}) F_{i+1}(\lfloor n / p_{i}^{c} \rfloor)\bigr) + F_{\text{prime}}(n) - F_{\text{prime}}(p_{k-1}) \end{align}

考虑计算Fk(n)F_{k}(n)
1.1.直接递推
2.2.从大到小枚举pp,当p2<np^{2}<n时转移增加值不为零,可后缀和优化
考虑计算Fprime(n)F_{prime}(n)发现只有1,2,...,n,nn,...,n2,n1,2,...,\lfloor\sqrt n\rfloor,\lfloor\frac{n}{\lfloor\sqrt n\rfloor}\rfloor,...,\lfloor\frac{n}{2}\rfloor,n这几个点有用
一般f(p)=aipcif(p)=\sum a_{i}p^{c_{i}},我们计算pmg(p),g(p)=ps\sum_{p\leq m}g(p),g(p)=p^{s}
Gk(n)G_{k}(n)表示埃筛第kk轮筛后剩下的gg的和
有递推公式Gk(n)=Gk1(n)[pk2n]g(pk)(Gk1(npk)Gk1(pk1))G_{k}(n)=G_{k-1}(n)-[p_{k}^{2}\leq n]g(p_{k})(G_{k-1}(\lfloor\frac{n}{p_{k}}\rfloor)-G_{k-1}({p_{k-1}}))
Gk1(npk)Gk1(pk1)G_{k-1}(\lfloor\frac{n}{p_{k}}\rfloor)-G_{k-1}({p_{k-1}})的结果是最小质因子大于pk1p_{k-1}的数的次方和
然后就可以用GG合并得到FF

类欧几里得算法#

f(a,b,c,n)=i=0nai+bcf(a,b,c,n)=\sum_{i=0}^{n} \lfloor \frac{ai+b}{c} \rfloor
g(a,b,c,n)=i=0nai+bc2g(a,b,c,n)=\sum_{i=0}^{n} \lfloor \frac{ai+b}{c} \rfloor ^{2}
h(a,b,c,n)=i=0niai+bch(a,b,c,n)=\sum_{i=0}^{n} i\lfloor \frac{ai+b}{c} \rfloor
计算ff

f(a,b,c,n)=i=0nai+bc=i=0n(a/cc+(amodc))i+b/cc+(bmodc)c=i=0n(amodc)i+(bmodc)c+a/ci+b/c=n(n+1)2a/c+(n+1)b/c+f(amodc,bmodc,c,n)\begin{align} f(a,b,c,n) &= \sum_{i=0}^{n} \left\lfloor \frac{ai+b}{c} \right\rfloor \\ &= \sum_{i=0}^{n} \left\lfloor \frac{(\lfloor a/c \rfloor \cdot c + (a \bmod c)) i + \lfloor b/c \rfloor \cdot c + (b \bmod c)}{c} \right\rfloor \\ &= \sum_{i=0}^{n} \left\lfloor \frac{(a \bmod c)i + (b \bmod c)}{c} \right\rfloor + \lfloor a/c \rfloor \, i + \lfloor b/c \rfloor \\ &= \frac{n(n+1)}{2} \lfloor a/c \rfloor + (n+1)\lfloor b/c \rfloor + f(a \bmod c,\, b \bmod c,\, c,\, n) \end{align}

如果a<c,b<ca<c,b<c,m=an+bcm=\lfloor \frac{an+b}{c} \rfloor,ai+bc=ai+b+1c1\lfloor \frac{ai+b}{c} \rfloor=\lceil \frac{ai+b+1}{c} \rceil-1

f(a,b,c,n)=i=0nai+bc=i=0nj=0m1[j<ai+bc]=i=0nj=0m1[j<ai+b+1c1]=i=0nj=0m1[j+1<ai+b+1c]=i=0nj=0m1[j+1<ai+b+1c]=i=0nj=0m1[jc+c<ai+b+1]=j=0m1i=0n[i>cj+cb1a]=j=0m1i=0n[i>cj+cb1a]=j=0m1(ncj+cb1a)=mnf(c,cb1,a,m1)\begin{align} f(a,b,c,n) &= \sum_{i=0}^{n} \left\lfloor \frac{ai+b}{c} \right\rfloor \\ &= \sum_{i=0}^{n} \sum_{j=0}^{m-1} [\, j < \left\lfloor \frac{ai+b}{c} \right\rfloor \,] \\ &= \sum_{i=0}^{n} \sum_{j=0}^{m-1} [\, j < \left\lceil \frac{ai+b+1}{c} \right\rceil - 1 \,] \\ &= \sum_{i=0}^{n} \sum_{j=0}^{m-1} [\, j+1 < \left\lceil \frac{ai+b+1}{c} \right\rceil \,] \\ &= \sum_{i=0}^{n} \sum_{j=0}^{m-1} [\, j+1 < \frac{ai+b+1}{c} \,] \\ &= \sum_{i=0}^{n} \sum_{j=0}^{m-1} [\, jc + c < ai + b + 1 \,] \\ &= \sum_{j=0}^{m-1} \sum_{i=0}^{n} [\, i > \frac{cj + c - b - 1}{a} \,] \\ &= \sum_{j=0}^{m-1} \sum_{i=0}^{n} [\, i > \left\lfloor \frac{cj + c - b - 1}{a} \right\rfloor \,] \\ &= \sum_{j=0}^{m-1} \left( n - \left\lfloor \frac{cj + c - b - 1}{a} \right\rfloor \right) \\ &= mn - f(c,\, c-b-1,\, a,\, m-1) \end{align}

计算g,hg,h

g(a,b,c,n)=i=0nai+bc2=i=0n(a/cc+(amodc))i+b/cc+(bmodc)c2=i=0n((amodc)i+(bmodc)c+a/ci+b/c)2=i=0n(amodc)i+(bmodc)c2+i=0n(a/ci)2+i=0nb/c2+2a/ci=0ni(amodc)i+(bmodc)c+2b/ci=0n(amodc)i+(bmodc)c+2a/cb/ci=0ni=g(amodc,bmodc,c,n)+n(n+1)(2n+1)6a/c2+(n+1)b/c2+2a/ch(amodc,bmodc,c,n)+2b/cf(amodc,bmodc,c,n)+n(n+1)a/cb/c\begin{align} g(a,b,c,n) &= \sum_{i=0}^{n} \left\lfloor \frac{ai+b}{c} \right\rfloor^{2} \\ &= \sum_{i=0}^{n} \left\lfloor \frac{(\lfloor a/c \rfloor \cdot c + (a \bmod c)) i + \lfloor b/c \rfloor \cdot c + (b \bmod c)}{c} \right\rfloor^{2} \\ &= \sum_{i=0}^{n} \left( \left\lfloor \frac{(a \bmod c)i + (b \bmod c)}{c} \right\rfloor + \lfloor a/c \rfloor \, i + \lfloor b/c \rfloor \right)^{2} \\ &= \sum_{i=0}^{n} \left\lfloor \frac{(a \bmod c)i + (b \bmod c)}{c} \right\rfloor^{2} + \sum_{i=0}^{n} (\lfloor a/c \rfloor \, i)^{2} + \sum_{i=0}^{n} \lfloor b/c \rfloor^{2} \\ &\quad + 2 \lfloor a/c \rfloor \sum_{i=0}^{n} i \left\lfloor \frac{(a \bmod c)i + (b \bmod c)}{c} \right\rfloor + 2 \lfloor b/c \rfloor \sum_{i=0}^{n} \left\lfloor \frac{(a \bmod c)i + (b \bmod c)}{c} \right\rfloor \\ &\quad + 2 \lfloor a/c \rfloor \lfloor b/c \rfloor \sum_{i=0}^{n} i \\ &= g(a \bmod c,\, b \bmod c,\, c,\, n) + \frac{n(n+1)(2n+1)}{6} \lfloor a/c \rfloor^{2} + (n+1)\lfloor b/c \rfloor^{2} \\ &\quad + 2 \lfloor a/c \rfloor \, h(a \bmod c,\, b \bmod c,\, c,\, n) + 2 \lfloor b/c \rfloor \, f(a \bmod c,\, b \bmod c,\, c,\, n) + n(n+1)\lfloor a/c \rfloor \lfloor b/c \rfloor \end{align}

如果a<c,b<c,m=an+bca<c,b<c,m=\lfloor \frac{an+b}{c} \rfloor

g(a,b,c,n)=i=0nai+bc2=i=0nj=0m1(2j+1)[j<ai+bc]=j=0m1(2j+1)i=0n[i>cj+cb1a]=j=0m1(2j+1)(ncj+cb1a)=m2n2h(c,cb1,a,m1)f(c,cb1,a,m1)\begin{align} g(a,b,c,n) &= \sum_{i=0}^{n} \left\lfloor \frac{ai+b}{c} \right\rfloor^{2} \\ &= \sum_{i=0}^{n} \sum_{j=0}^{m-1} (2j+1)\,[\, j < \left\lfloor \frac{ai+b}{c} \right\rfloor \,] \\ &= \sum_{j=0}^{m-1} (2j+1) \sum_{i=0}^{n} \left[\, i > \left\lfloor \frac{cj + c - b - 1}{a} \right\rfloor \,\right] \\ &= \sum_{j=0}^{m-1} (2j+1)\left( n - \left\lfloor \frac{cj + c - b - 1}{a} \right\rfloor \right) \\ &= m^{2} n - 2\, h(c,\, c-b-1,\, a,\, m-1) - f(c,\, c-b-1,\, a,\, m-1) \end{align}h(a,b,c,n)=i=0nai+bci=i=0n(a/cc+(amodc))i+b/cc+(bmodc)ci=i=0n(amodc)i+(bmodc)ci+a/ci2+b/ci=h(amodc,bmodc,c,n)+n(n+1)(2n+1)6a/c+n(n+1)2b/c\begin{align} h(a,b,c,n) &= \sum_{i=0}^{n} \left\lfloor \frac{ai+b}{c} \right\rfloor\, i \\ &= \sum_{i=0}^{n} \left\lfloor \frac{(\lfloor a/c \rfloor \cdot c + (a \bmod c))\, i + \lfloor b/c \rfloor \cdot c + (b \bmod c)} {c} \right\rfloor i \\ &= \sum_{i=0}^{n} \left\lfloor \frac{(a \bmod c)i + (b \bmod c)}{c} \right\rfloor i + \lfloor a/c \rfloor\, i^{2} + \lfloor b/c \rfloor\, i \\ &= h(a \bmod c,\, b \bmod c,\, c,\, n) + \frac{n(n+1)(2n+1)}{6}\lfloor a/c \rfloor + \frac{n(n+1)}{2}\lfloor b/c \rfloor \end{align}

如果a<ca<c,b<cb<c,m=an+bcm=\lfloor \frac{an+b}{c} \rfloor

h(a,b,c,n)=i=0nai+bci=i=0nij=0m1[j<ai+bc]=j=0m1i=0ni[i>cj+cb1a]=j=0m1i=cj+cb1a+1ni=j=0m1(n+cj+cb1a+1)(ncj+cb1a)2=12j=0m1((n+1)ncj+cb1acj+cb1a2)=12(n+1)nm12f(c,cb1,a,m1)12g(c,cb1,a,m1)\begin{align} h(a,b,c,n) &= \sum_{i=0}^{n} \left\lfloor \frac{ai+b}{c} \right\rfloor\, i \\ &= \sum_{i=0}^{n} i \sum_{j=0}^{m-1} \left[\, j < \left\lfloor \frac{ai+b}{c} \right\rfloor \,\right] \\ &= \sum_{j=0}^{m-1} \sum_{i=0}^{n} i \left[\, i > \left\lfloor \frac{cj + c - b - 1}{a} \right\rfloor \,\right] \\ &= \sum_{j=0}^{m-1} \sum_{i=\left\lfloor \frac{cj + c - b - 1}{a} \right\rfloor + 1}^{n} i \\ &= \sum_{j=0}^{m-1} \frac{\left(n + \left\lfloor \frac{cj + c - b - 1}{a} \right\rfloor + 1\right) \left(n - \left\lfloor \frac{cj + c - b - 1}{a} \right\rfloor\right)}{2} \\ &= \frac{1}{2} \sum_{j=0}^{m-1} \left( (n+1)n - \left\lfloor \frac{cj + c - b - 1}{a} \right\rfloor - \left\lfloor \frac{cj + c - b - 1}{a} \right\rfloor^{2} \right) \\ &= \frac{1}{2}(n+1)nm - \frac{1}{2} f(c,\, c-b-1,\, a,\, m-1) - \frac{1}{2} g(c,\, c-b-1,\, a,\, m-1) \end{align}

最大公因数#

欧几里得算法#

gcd(a,b)=gcd(b,amodb)gcd(a,b)=gcd(b,a\bmod b)

扩展欧几里得算法#

ax1+by1=gcd(a,b)ax_{1}+by_{1}=gcd(a,b)
bx2+(amodb)y2=gcd(b,amodb)bx_{2}+(a\bmod b)y_{2}=gcd(b,a\bmod b),又(amodb)=abab(a\bmod b)=a-b\lfloor \frac{a}{b}\rfloor,带入得
bx2+(abab)y2=ay2+b(x2aby2)=ax1+by1bx_{2}+(a-b\lfloor \frac{a}{b}\rfloor)y_{2}=ay_{2}+b(x_{2}-\lfloor \frac{a}{b}\rfloor y_{2})=ax_{1}+by_{1}
x1=y2x_{1}=y_{2},y1=x2aby2y_{1}=x_{2}-\lfloor \frac{a}{b}\rfloor y_{2}
最终会有b=0b=0,a=gcd=>x=1a=gcd=>x=1,y=0y=0

int exgcd(int a,int b,int& x,int& y){
if (!b)return x=1,y=0,a;
int d=exgcd(b,a%b,x,y);
int t=x;
x=y;
y=t-(a/b)*y;
return d;
}

欧拉函数#

一些性质#

积性函数gcd(a,b)=1=>φ(ab)=φ(a)φ(b)gcd(a,b)=1=>\varphi(ab)=\varphi(a)\varphi(b)
n=dnφ(d)n=\sum_{d|n}\varphi(d)
φ(pk)=pkpk1\varphi(p^{k})=p^{k}-p^{k-1}
φ(n)=i=1sφ(piki)=i=1spiki1(pi1)=ni=1s(11pi)\varphi(n)=\prod_{i=1}^{s}\varphi(p_{i}^{k_{i}})=\prod_{i=1}^{s}p_{i}^{k_{i}-1}(p_{i}-1)=n\prod_{i=1}^{s}(1-\frac{1}{p_{i}})
φ(mn)φ(gcd(m,n))=φ(m)φ(n)gcd(m,n)\varphi(mn)\varphi(gcd(m,n))=\varphi(m)\varphi(n)gcd(m,n)

欧拉反演#

gcd(a,b)=dgcd(a,b)φ(d)=d[da][db]φ(d)\gcd(a,b)=\sum_{d|gcd(a,b)}\varphi(d)=\sum_{d}[d|a][d|b]\varphi(d)
i=1ngcd(i,n)=di=1n[di][dn]φ(d)=dnd[dn]φ(d)=dnndφ(d)\sum_{i=1}^{n}gcd(i,n)=\sum_{d}\sum_{i=1}^{n}[d|i][d|n]\varphi(d)=\sum_{d}\lfloor \frac{n}{d}\rfloor [d|n]\varphi(d)=\sum_{d|n}\lfloor \frac{n}{d}\rfloor \varphi(d)

欧拉定理#

gcd(a,m)=1gcd(a,m)=1,则aφ(m)1(modm)a^{\varphi(m)} \equiv 1(\bmod m)

费马小定理#

ap11(modp)a^{p-1}\equiv 1(\bmod p)

扩展欧拉定理#

ab{abmodφ(m),gcd(a,m)=1,ab,gcd(a,m)1, b<φ(m),a(bmodφ(m))+φ(m),gcd(a,m)1, bφ(m).\begin{align} a^{b} \equiv \begin{cases} a^{\, b \bmod \varphi(m)}, & \gcd(a,m)=1, \\[6pt] a^{\, b}, & \gcd(a,m)\neq 1,\ b < \varphi(m), \\[6pt] a^{\, (b \bmod \varphi(m)) + \varphi(m)}, & \gcd(a,m)\neq 1,\ b \ge \varphi(m). \end{cases} \end{align}

裴蜀定理#

存在x,yx,y使得ax+by=gcd(x,y)ax+by=gcd(x,y)

二元一次不定方程#

a1x+a2y=ba_{1}x+a_{2}y=b
(x,y)=(x1+ta2gcd(a1,a2),x2ta1gcd(a1,a2))(x,y)=(x_{1}+t\frac{a_{2}}{gcd(a_{1},a_{2})},x_{2}-t\frac{a_{1}}{gcd(a_{1},a_{2})})

FrobeniusFrobenius 硬币问题#

a1,a2,...,ana_{1},a_{2},...,a_{n}的面值的硬币若干种,且gcd(a1,a2,...,an)=1gcd(a_{1},a_{2},...,a_{n})=1,那么最大的不能被表示的面值为多少
n=2n=2时,答案为a1a2a1a2a_{1}a_{2}-a_{1}-a_{2}

SternBrocotStern-Brocot树与FareyFarey序列#

waitingwaiting

逆元#

线性求逆元#

p=pii+(pmodi)p= \lfloor \frac{p}{i}\rfloor i +(p\bmod i)
0pii+(pmodi)i+(pmodi)modp0\equiv\lfloor \frac{p}{i}\rfloor i +(p\bmod i) i +(p\bmod i)\bmod p
i1pi(pmodi)1modpi^{-1}\equiv -\lfloor \frac{p}{i}\rfloor(p\bmod i)^{-1} \mod p

中国剩余定理(CRT)(CRT)#

基本形式#

gcd(n1,n2,...,nk)=1gcd(n_{1},n_{2},...,n_{k})=1

{xa1(modn1),xa2(modn2),xak(modnk).\begin{cases} x \equiv a_{1} \pmod{n_{1}}, \\ x \equiv a_{2} \pmod{n_{2}}, \\ \vdots \\ x \equiv a_{k} \pmod{n_{k}}. \end{cases}

xx
1.1.计算n=i=1knin=\prod_{i=1}^{k}n_{i}
2.mi=nni,mi12.m_{i}=\frac{n}{n_{i}},m_{i}^{-1}mimodnim_{i}\bmod n_{i}的逆元
3.x=i=1kaimimi1x=\sum_{i=1}^{k}a_{i}m_{i}m_{i}^{-1}

int a[N],r[N];
int crt(int k){
int n=1,ans=0;
for (int i=1;i<=k;i++)n*=r[i];
for (int i=1;i<=k;i++){
int m=n/r[i];
ans=(ans+a[i]*m*pow(m,r[i])%n)%n;
}
return (ans%n+n)%n;
}

GarnerGarner#

a<i=1kpia<\prod_{i=1}^{k}p_{i}

{aa1(modp1),aa2(modp2),aak(modpk).\begin{cases} a \equiv a_{1} \pmod{p_{1}}, \\ a \equiv a_{2} \pmod{p_{2}}, \\ \vdots \\ a \equiv a_{k} \pmod{p_{k}}. \end{cases}

构造a=x1+x2p1+...xkp1...pk1a=x_{1}+x_{2}p_{1}+...x_{k}p_{1}...p_{k-1},设piri,j1(modpj)p_{i}r_{i,j}\equiv1(\bmod p_{j})
带入有
x1a1(modp1)x_{1}\equiv a_{1}(\bmod p_{1})
x1+x2p1a2(modp2)=>x_{1}+x_{2}p_{1}\equiv a_{2}(\bmod p_{2})=>,x2(a2x1)r1,2(modp2)x_{2}\equiv (a_{2}-x_{1})r_{1,2}(\bmod p_{2})
以此类推
xk(...((akx1)r1,kx2)r2,k...)rk1,k(modpk)x_{k}\equiv (...((a_{k}-x_{1})r_{1,k}-x_{2})r_{2,k}...)r_{k-1,k}(\bmod p_{k})

for (int i = 0; i < k; ++i) {
x[i] = a[i];
for (int j = 0; j < i; ++j) {
x[i] = r[j][i] * (x[i] - x[j]);
x[i] = x[i] % p[i];
if (x[i] < 0) x[i] += p[i];
}
}

(粘的代码)

扩展#

xa1(modm1)x\equiv a_{1}(\bmod m_{1}),xa2(modm2)x\equiv a_{2}(\bmod m_{2}),m1,m2m_{1},m_{2}不一定互质
x=m1p+a1=m2q+a2=>m1p+m2q=(a2a1)x=m_{1}p+a_{1}=m_{2}q+a_{2}=>m_{1}p+m_{2}q=(a_{2}-a_{1})
gcd(m1,m2)(a2a1)gcd(m_{1},m_{2})\nmid (a_{2}-a_{1})时,无解
否则可以求出一组(p,q)(p,q),使得xb(modlcm(m1,m))x\equiv b(\bmod lcm(m_{1},m_{}))
多个方程两两合并

升幂引理#

νp(n)\nu_{p}(n),表示nn的标准分解中pp的次数,即pνp(n)np^{\nu_{p}(n)}||n

第一部分#

对所有素数pp和满足gcd(n,p)=1gcd(n,p)=1的整数nn,
1.1.pxyp | x-y,则:νp(xnyn)=νp(xy)\nu_{p}(x^{n}-y^{n})=\nu_{p}(x-y)
2.2.px+yp|x+y,则对奇数nn有:νp(xn+yn)=νp(x+y)\nu_{p}(x^{n}+y^{n})=\nu_{p}(x+y)
ProofProof:
pxy<=>xy(modp)p|x-y<=>x\equiv y(\bmod p)
i=0n1xiyn1inxn1≢0(modp)\sum_{i=0}^{n-1}x^{i}y^{n-1-i}\equiv nx^{n-1}\not\equiv 0(\bmod p)
xnyn=(xy)i=0n1xiyn1ix^{n}-y^{n}=(x-y)\sum_{i=0}^{n-1}x^{i}y^{n-1-i}
则有νp(xnyn)=νp(xy)\nu_{p}(x^{n}-y^{n})=\nu_{p}(x-y)

px+y<=>xy(modp)p|x+y<=>x\equiv -y(\bmod{p})
i=0n1xi(y)n1inxn1≢0(modp)\sum_{i=0}^{n-1}x^{i}(-y)^{n-1-i}\equiv nx^{n-1}\not\equiv 0(\bmod p)
xn+yn=(x+y)i=0n1xi(y)n1ix^{n}+y^{n}=(x+y)\sum_{i=0}^{n-1}x^{i}(-y)^{n-1-i}
则有νp(xn+yn)=νp(x+y)\nu_{p}(x^{n}+y^{n})=\nu_{p}(x+y)

第二部分#

对所有奇素数pp,
1.1.pxyp | x-y,则:νp(xnyn)=νp(xy)+νp(n)\nu_{p}(x^{n}-y^{n})=\nu_{p}(x-y)+\nu_{p}(n)
2.2.px+yp|x+y,则对奇数nn有:νp(xn+yn)=νp(x+y)+νp(n)\nu_{p}(x^{n}+y^{n})=\nu_{p}(x+y)+\nu_{p}(n)
ProofProof
我们只需要证明pnp\mid n的情况
n=pn=p时,我们只要证p2i=0n1xiyn1ip^{2}\nmid \sum_{i=0}^{n-1}x^{i}y^{n-1-i}
y=x+kpy=x+kp,(下面有点啰嗦)

i=0p1xp1iyi=i=0p1xp1i(x+kp)i=i=0p1xp1ij=0i(ij)xij(kp)j=i=0p1xp1j=0i(ij)(kpx)j=xp1j=0p1i=jp1(ij)(kpx)j=xp1j=0p1(kpx)ji=jp1(ij)xp1(p+kpxi=1p1(i1))xp1(p+kpx(p1)p2)xp1p≢0(modp2)\begin{align} \sum_{i=0}^{p-1} x^{p-1-i} y^{i} &= \sum_{i=0}^{p-1} x^{p-1-i} (x + kp)^{i} \\ &= \sum_{i=0}^{p-1} x^{p-1-i} \sum_{j=0}^{i} \binom{i}{j} x^{i-j} (kp)^{j} \\ &= \sum_{i=0}^{p-1} x^{p-1} \sum_{j=0}^{i} \binom{i}{j} \left(\frac{kp}{x}\right)^{j} \\ &= x^{p-1} \sum_{j=0}^{p-1} \sum_{i=j}^{p-1} \binom{i}{j} \left(\frac{kp}{x}\right)^{j} \\ &= x^{p-1} \sum_{j=0}^{p-1} \left(\frac{kp}{x}\right)^{j} \sum_{i=j}^{p-1} \binom{i}{j} \\ &\equiv x^{p-1} \left( p + \frac{kp}{x} \sum_{i=1}^{p-1} \binom{i}{1} \right) \\ &\equiv x^{p-1} \left( p + \frac{kp}{x} \cdot \frac{(p-1)p}{2} \right) \\ &\equiv x^{p-1} p \\ &\not\equiv 0 \pmod{p^{2}} \end{align}

则有νp(xpyp)=νp(xy)+νp(p)\nu_{p}(x^{p}-y^{p})=\nu_{p}(x-y)+\nu_{p}(p)
下面用数学归纳法证明第一个式子
n=pabn=p^{a}b,gcd(p,b)=1gcd(p,b)=1
νp((xpa)b(ypa)b)=νp(xpaypa)\nu_{p}((x^{p^{a}})^{b}-(y^{p^{a}})^{b})=\nu_{p}(x^{p^{a}}-y^{p^{a}})
νp((xpa1)p(ypa1)p)=νp(xpa1ypa1)+νp(p)\nu_{p}((x^{p^{a-1}})^{p}-(y^{p^{a-1}})^{p})=\nu_{p}(x^{p^{a-1}}-y^{p^{a-1}})+\nu_{p}(p)
以此类推得
νp(xnyn)=νp(xy)+νp(n)\nu_{p}(x^{n}-y^{n})=\nu_{p}(x-y)+\nu_{p}(n)

与上面相似,我们只要证明pnp|n的情况
n=pn=p时,我们只要证p2i=0n1xi(y)n1ip^{2}\nmid \sum_{i=0}^{n-1}x^{i}(-y)^{n-1-i}
y=xkpy=-x-kp,与上面完全相同

i=0p1xp1i(y)i=i=0p1xp1i(x+kp)ixp1p≢0(modp2)\begin{align} \sum_{i=0}^{p-1} x^{p-1-i} (-y)^{i} &= \sum_{i=0}^{p-1} x^{p-1-i} (x + kp)^{i} \\ &\equiv x^{p-1} p \\ &\not\equiv 0 \pmod{p^{2}} \end{align}

则有νp(xp+yp)=νp(x+y)+νp(p)\nu_{p}(x^{p}+y^{p})=\nu_{p}(x+y)+\nu_{p}(p)
下面用数学归纳法证明第二个式子
n=pabn=p^{a}b,gcd(p,b)=1gcd(p,b)=1
νp((xpa)b+(ypa)b)=νp(xpa+ypa)\nu_{p}((x^{p^{a}})^{b}+(y^{p^{a}})^{b})=\nu_{p}(x^{p^{a}}+y^{p^{a}})
νp((xpa1)p+(ypa1)p)=νp(xpa1+ypa1)+νp(p)\nu_{p}((x^{p^{a-1}})^{p}+(y^{p^{a-1}})^{p})=\nu_{p}(x^{p^{a-1}}+y^{p^{a-1}})+\nu_{p}(p)
以此类推得
νp(xn+yn)=νp(x+y)+νp(n)\nu_{p}(x^{n}+y^{n})=\nu_{p}(x+y)+\nu_{p}(n)

第三部分#

p=2p=2pxyp\mid x-y
1.1.对奇数nnνp(xnyn)=νp(xy)\nu_{p}(x^{n}-y^{n})=\nu_{p}(x-y)
2.2.对偶数nnνp(xnyn)=νp(xy)+νp(x+y)+νp(n)1\nu_{p}(x^{n}-y^{n})=\nu_{p}(x-y)+\nu_{p}(x+y)+\nu_{p}(n)-1
对上述x,y,nx,y,n
4xy4\mid x-y,则:
ν2(x+y)=1\nu_{2}(x+y)=1
ν2(xnyn)=ν2(xy)+ν2(n)\nu_{2}(x^{n}-y^{n})=\nu_{2}(x-y)+\nu_{2}(n)
ProofProof
p=2p=2时,会把第二部分推导部分倒数第三行分母中的22约掉,不能用上面的方法
n=2ab,a=ν2(n),abn=2^{a}b,a=\nu_{2}(n),a\nmid b
ν2(xnyn)=ν2(x2ay2a)=ν2((xy)(x+y)i=1a1(x2i+y2i))\nu_{2}(x^{n}-y^{n})=\nu_{2}(x^{2^{a}}-y^{2^{a}})=\nu_{2}((x-y)(x+y)\prod_{i=1}^{a-1}(x^{2^{i}}+y^{2^{i}}))
易知奇数的偶数次方模4411,则x2i+y2i2(mod4)x^{2^{i}}+y^{2^{i}}\equiv 2(\bmod 4)
νp(xnyn)=νp(xy)+νp(x+y)+νp(n)1\nu_{p}(x^{n}-y^{n})=\nu_{p}(x-y)+\nu_{p}(x+y)+\nu_{p}(n)-1

阶乘取模#

n!=pνp(n!)(n!)pn!=p^{\nu_{p}(n!)}(n!)_{p}

WilsonWilson定理#

对自然数n>1n>1,当且仅当nn时素数时,(n1)!1(modn)(n-1)!\equiv -1(\bmod n)

定理#

对自然数m>1m>1,有1k<m,gcd(k,m)=1k±1(modm)\prod_{1\leq k<m,gcd(k,m)=1}k\equiv \pm 1(\bmod m)
1-1,当且仅当模mm的原根存在

推论#

对素数pp和正整数α\alpha,有

1k<pαk{1,p=2, α3,1,otherwise(modpα)\begin{align} \prod_{1 \le k < p^{\alpha}} k \equiv \begin{cases} 1, & p = 2,\ \alpha \ge 3, \\ -1, & \text{otherwise} \end{cases} \pmod{p^{\alpha}} \end{align}

阶乘余数#

计算(n!)pmodp(n!)_{p}\bmod p
(n!)p(1)np(nmodp)!(np!)p(modp)(n!)_{p}\equiv (-1)^{\lfloor \frac{n}{p}\rfloor}\cdot(n\bmod p)!\cdot(\lfloor \frac{n}{p}\rfloor!)_{p}(\bmod p)
(n!)p(±1)np(1j(nmodpα),gcd(j,p)=1j)(np!)p(modpα)(n!)_{p}\equiv (\pm1)^{\lfloor \frac{n}{p}\rfloor}\cdot(\prod_{1\leq j\leq(n\bmod p^{\alpha}),gcd(j,p)=1}j)\cdot(\lfloor \frac{n}{p}\rfloor!)_{p}(\bmod p^{\alpha}),当p=2,α3p=2 , \alpha\geq3时取11,其余情况取1-1
(n!)p(±1)jαnpjj0F(npjmodpa)(n!)_{p}\equiv (\pm1)^{\sum_{j\geq\alpha}\lfloor \frac{n}{p^{j}}\rfloor}\prod_{j\geq0}F(\lfloor \frac{n}{p^{j}}\rfloor\bmod p^{a}),F(m)=1km,gcd(k,m)=1kmodpαF(m)=\prod_{1\leq k\leq m,gcd(k,m)=1}k\bmod p^{\alpha},当p=2,α3p=2 , \alpha\geq3时取11,其余情况取1-1

LegendreLegendre公式#

νp(n!)=i=1npi=nSp(n)p1\nu_{p}(n!)=\sum_{i=1}^{\infty}\lfloor \frac{n}{p^{i}}\rfloor =\frac{n-S_{p}(n)}{p-1}Sp(n)S_{p}(n)pp进制下nn的各个位数之和

KummerKummer定理#

νp((mn))=Sp(n)+Sp(mn)Sp(m)p1\nu_{p}(\binom{m}{n})=\frac{S_{p}(n)+S_{p}(m-n)-S_{p}(m)}{p-1}

LucasLucas定理#

对素数pp,有
(nk)(npkp)(nmodpkmodp)(modp)\binom{n}{k}\equiv\binom{\lfloor\frac{n}{p}\rfloor}{\lfloor\frac{k}{p}\rfloor}\binom{n\bmod p}{k\bmod p}(\bmod p)
ProofProof
(pn)[n=0n=p](modp)\binom{p}{n}\equiv[n=0\lor n=p](\bmod p)
f(x)=axn+bxmf(x)=ax^{n}+bx^{m}

(f(x))p=(axn+bxm)p=k=0p(pk)(axn)k(bxm)pk=apxpn+bpxpm=a(xp)n+b(xp)m=f(xp)(modp)\begin{align} (f(x))^{p} &= (a x^{n} + b x^{m})^{p} \\ &= \sum_{k=0}^{p} \binom{p}{k} (a x^{n})^{k} (b x^{m})^{p-k} \\ &= a^{p} x^{pn} + b^{p} x^{pm} \\ &= a (x^{p})^{n} + b (x^{p})^{m} \\ &= f(x^{p}) \pmod{p} \end{align}

(1+x)n=(1+x)pnp(1+x)nmodp(1+xp)np(1+x)nmodp(modp)(1+x)^{n}=(1+x)^{p\lfloor\frac{n}{p}\rfloor}(1+x)^{n\bmod p}\equiv (1+x^{p})^{\lfloor\frac{n}{p}\rfloor}(1+x)^{n\bmod p}(\bmod p)
对比系数有,(nk)(npkp)(nmodpkmodp)(modp)\binom{n}{k}\equiv\binom{\lfloor\frac{n}{p}\rfloor}{\lfloor\frac{k}{p}\rfloor}\binom{n\bmod p}{k\bmod p}(\bmod p)

exLucasexLucas算法#

素数幂模情况#

(nk)=pνp(n!)νp(k!)νp((nk)!)(n!)p(k!)p((nk)!)p\binom{n}{k}=p^{\nu_{p}(n!)-\nu_{p}(k!)-\nu_{p}((n-k)!)}\frac{(n!)_{p}}{(k!)_{p}((n-k)!)_{p}}

一般模数情况#

用中国剩余定理直接计算即可
m=p1α1p2α2...psαsm=p_{1}^{\alpha_{1}}p_{2}^{\alpha_{2}}...p_{s}^{\alpha_{s}}

{(nk)r1(modp1α1),(nk)r2(modp2α2),(nk)rs(modpsαs).\begin{cases} \binom{n}{k} \equiv r_{1} \pmod{p_{1}^{\alpha_{1}}}, \\ \binom{n}{k} \equiv r_{2} \pmod{p_{2}^{\alpha_{2}}}, \\ \vdots \\ \binom{n}{k} \equiv r_{s} \pmod{p_{s}^{\alpha_{s}}}. \end{cases}

同余方程#

定义#

对整数mm和一元整系数多项式f(x)=i=0naixif(x)=\sum_{i=0}^{n}a_{i}x^{i},其中未知数xZmx\in Z_{m},称形如f(x)0(modm)f(x)\equiv 0(\bmod m)的方程为关于未知数xx的模mm的一元同余方程,若an≢0(modm)a_{n}\not\equiv0(\bmod m),则上式称为nn次同余方程

素数幂模同余方程#

m=pe,pP,eZ>1m=p^{e},p\in P,e\in Z_{>1}
我们有f(x0)0(modpe)f(x_{0})\equiv 0(\bmod p^{e}),则f(x0)0(modpe1)f(x_{0})\equiv 0(\bmod p^{e-1})

HenselHensel引理#

pP,eZ>1p\in P,e\in Z_{>1},f(x)=i=0naixi,(pea),f(x)=i=1niaixi1f(x)=\sum_{i=0}^{n}a_{i}x^{i},(p^{e}\nmid a),f'(x)=\sum_{i=1}^{n}ia_{i}x^{i-1},且f(x0)0(modpe1)f(x_{0})\equiv 0(\bmod p^{e-1})
1.1.f(x0)0(modp)f'(x_{0})\equiv0(\bmod p),则存在整数tt使得x=x0+pe1tx=x_{0}+p^{e-1}t,是方程f(x)0(modpe)f(x)\equiv 0(\bmod p^{e})的解
2.2.f(x0)0(modp)f'(x_{0})\equiv0(\bmod p)f(x0)0(modpe)f'(x_{0})\equiv0(\bmod p^{e}),则t=0,1,...,p1t=0,1,...,p-1都可
3.3.f(x0)0(modp)f'(x_{0})\equiv0(\bmod p)f(x0)≢0(modpe)f'(x_{0})\not\equiv0(\bmod p^{e}),则不能由上式构造
ProofProof
假设xx是解,带入后有

f(x0+pe1t)i=0nai(x0+pe1t)ii=0naij=0i(ij)x0ij(pe1t)jj=0n(pe1t)ji=jnai(ij)x0iji=0nai(i0)x0i+pe1ti=1nai(i1)x0i1f(x0)+pe1tf(x0)0(modpe)\begin{align} f(x_{0} + p^{e-1} t) &\equiv \sum_{i=0}^{n} a_{i} (x_{0} + p^{e-1} t)^{i} \\ &\equiv \sum_{i=0}^{n} a_{i} \sum_{j=0}^{i} \binom{i}{j} x_{0}^{\, i-j} (p^{e-1} t)^{j} \\ &\equiv \sum_{j=0}^{n} (p^{e-1} t)^{j} \sum_{i=j}^{n} a_{i} \binom{i}{j} x_{0}^{\, i-j} \\ &\equiv \sum_{i=0}^{n} a_{i} \binom{i}{0} x_{0}^{\, i} + p^{e-1} t \sum_{i=1}^{n} a_{i} \binom{i}{1} x_{0}^{\, i-1} \\ &\equiv f(x_{0}) + p^{e-1} t\, f'(x_{0}) \\ &\equiv 0 \pmod{p^{e}} \end{align}

tf(x0)f(x0)pe1(modp)tf'(x_{0})\equiv -\frac{f(x_{0})}{p^{e-1}}(\bmod p)
三种情况对应即可

注意到我们推理中只有最后一步用到f(x0)0(modpe1)f(x_{0})\equiv 0(\bmod p^{e-1}),那么我们可以对着最后的式子构造解

推论11#

1.f(s)0(modp),f(s)≢0(modp)1.f(s)\equiv 0(\bmod p),f'(s)\not\equiv0(\bmod p),则存在xsZpe,xss(modp),st.f(xs)0(modpe)x_{s}\in Z_{p^{e}},x_{s}\equiv s(\bmod p),st.f(x_{s})\equiv 0(\bmod p^{e})
2.f(x)0(modp),f(x)0(modp)2.f(x)\equiv 0(\bmod p),f'(x)\equiv 0(\bmod p)无公共解,则原方程的解数与f(x)0(modp)f(x)\equiv 0(\bmod p)相同
proof?proof?

素数模同余方程#

e=1e=1,其余的同上

定理11#

f(x)0(modp)f(x)\equiv 0(\bmod p)kk个不同的解x1,x2,...,xk(kn)x_{1},x_{2},...,x_{k}(k\leq n),则
f(x)g(x)i=1k(xxi)(modp)f(x)\equiv g(x)\prod_{i=1}^{k}(x-x_{i})(\bmod p),
degg=nk,[xnk]g(x)=andeg g=n-k,[x^{n-k}]g(x)=a_{n}

推论22#

(xZ),xp11i=1p1(xi)(modp)(\forall x\in Z),x_{p-1}-1\equiv \prod_{i=1}^{p-1}(x-i)(\bmod p)
(p1)!1(modp)(p-1)!\equiv -1(\bmod p)

LagrangeLagrange定理#

f(x)0(modp)f(x)\equiv 0(\bmod p)至多有nn个根

推论33#

i=0nbixi0(modp)\sum_{i=0}^{n}b_{i}x^{i}\equiv 0(\bmod p)的解数大于nn,则(i=0,1,...,n),pbi(\forall i=0,1,...,n),p\mid b_{i}

定理22#

f(x)0(modp)f(x)\equiv 0(\bmod p)的解数不为pp,则必定存在degr<pdeg r<p的整系数多项式r(x),st.r(x)0(modp)r(x),st.r(x)\equiv 0(\bmod p)f(x)0(modp)f(x)\equiv 0(\bmod p)同解集
ProofProof
不妨设npn\geq p
f(x)=g(x)(xpx)+r(x),degr<pf(x)=g(x)(x^{p}-x)+r(x),deg r<p
运用费马小定理即可

定理33#

npn\leq p,则方程xn+i=0n1aixi0(modp)x_{n}+\sum_{i=0}^{n-1}a_{i}x_{i}\equiv 0(\bmod p)nn个解当且仅当存在整系数多项式q(x),r(x),(degr<n),st.q(x),r(x),(deg r<n),st.
xpx=f(x)q(x)+pr(x)x^{p}-x=f(x)q(x)+pr(x)
ProofProof
必要性:
xpx=f(x)q(x)+r1(x)x^{p}-x=f(x)q(x)+r_{1}(x)
r1r_{1}ff同解,则知r1(x)=pr(x)r_{1}(x)=pr(x)
充分性:
f(x)q(x)0(modp)f(x)q(x)\equiv 0(\bmod p)
ff的解数为s,sns,s\leq n
degf+degqp=>,s+pnq,sndeg f+deg q\geq p=>,s+p-n\geq q,s\geq n
s=ns=n

定理44#

np1,pa,n\mid p-1,p\nmid a,则方程xna(modp)x^{n}\equiv a(\bmod p)有解当且仅当ap1n1(modp)a^{\frac{p-1}{n}}\equiv 1(\bmod p),若有解,解数为nn
ProofProof
必要性:
方程有解x0x_{0},则ap1n(x0n)p1n1(modp)a^{\frac{p-1}{n}}\equiv (x_{0}^{n})^{\frac{p-1}{n}} \equiv 1(\bmod p)
充分性:
ap1n1(modp)a^{\frac{p-1}{n}}\equiv 1(\bmod p)
xpx=x(xp11)=x((xn)p1nap1n+ap1n1)=(xna)P(x)+x(ap1n1)x^{p}-x=x(x^{p-1}-1)=x((x^{n})^{\frac{p-1}{n}}-a^{\frac{p-1}{n}}+a^{\frac{p-1}{n}}-1)=(x^{n}-a)P(x)+x(a^{\frac{p-1}{n}}-1)
由定理3知有nn个解

高次同余方程(组)的求解#

我们可以进行下面转化
同余方程组-同余方程
模合数-模素数幂-模素数HenselHensel引理)
我们最后只需考虑
xn+i=0n1aixi0(modp),n<px^{n}+\sum_{i=0}^{n-1}a_{i}x^{i}\equiv 0(\bmod p),n<p
xx代换为xan1nx-\frac{a_{n-1}}{n}可消去xn1x^{n-1}
只需考虑xn+i=0n2aixi0(modp),n<px^{n}+\sum_{i=0}^{n-2}a_{i}x^{i}\equiv 0(\bmod p),n<p
n=1n=1线性同余方程
n=2n=2二次剩余
可化为xna(modp)kx^{n}\equiv a(\bmod p)k次剩余

二次剩余#

定义#

gcd(a,p)=1gcd(a,p)=1,若存在整数xx使得x2a(modp)x^{2}\equiv a(\bmod p),则称aa为模pp的二次剩余,否则称aa为模pp的二次非剩余

EulerEuler判别法#

对奇素数pp,和满足gcd(a,p)=1gcd(a,p)=1aa,有

ap12{1(modp),xZ, ax2(modp),1(modp),otherwise.\begin{align} a^{\frac{p-1}{2}} \equiv \begin{cases} 1 \pmod{p}, & \exists\, x \in \mathbb{Z},\ a \equiv x^{2} \pmod{p}, \\[6pt] -1 \pmod{p}, & \text{otherwise}. \end{cases} \end{align}

ProofProof
由费马小定理,ap11(modp)a^{p-1}\equiv 1(\bmod p)
(ap121)(ap12+1)0(modp)(a^{\frac{p-1}{2}}-1)(a^{\frac{p-1}{2}}+1)\equiv 0(\bmod p)
则若gcd(a,p)=1gcd(a,p)=1,则ap12±1(modp)a^{\frac{p-1}{2}}\equiv \pm1(\bmod p)
又知xpx=(xna)P(x)+x(ap1n1)x^{p}-x=(x^{n}-a)P(x)+x(a^{\frac{p-1}{n}}-1)
可证上述结论

对于奇素数pp,模pp意义下的二次剩余和二次非剩余都有p12\frac{p-1}{2}

LegendreLegendre符号#

对奇素数pp和整数aa,定义LegendreLegendre符号如下:

(ap)={0,pa,1,pa  xZ, ax2(modp),1,otherwise.\begin{align} \left( \frac{a}{p} \right) = \begin{cases} 0, & p \mid a, \\[6pt] 1, & p \nmid a \ \land\ \exists\, x \in \mathbb{Z},\ a \equiv x^{2} \pmod{p}, \\[6pt] -1, & \text{otherwise}. \end{cases} \end{align}

1.1.对任意整数aaap12(ap)(modp)a^{\frac{p-1}{2}}\equiv (\frac{a}{p})(\bmod p)
(1p)=1,(1p)=(1)p12(\frac{1}{p})=1,(\frac{-1}{p})=(-1)^{\frac{p-1}{2}}
2.a1a2(modp)=>(a1p)=(a2p)2.a_{1}\equiv a_{2}(\bmod p)=>(\frac{a_{1}}{p})=(\frac{a_{2}}{p})
3.3.(完全积性)对任意整数a1,a2,(a1a2p)=(a1p)(a2p)a_{1},a_{2},(\frac{a_{1}a_{2}}{p})=(\frac{a_{1}}{p})(\frac{a_{2}}{p})
则对整数a,b,pb,(ab2p)=(ap)a,b,p\nmid b,(\frac{ab^{2}}{p})=(\frac{a}{p})
4.(2p)=(1)p2184.(\frac{2}{p})=(-1)^{\frac{p^{2}-1}{8}}

二次互反律#

p,qp,q是两个不同的奇素数,则(pq)(qp)=(1)p12q12(\frac{p}{q})(\frac{q}{p})=(-1)^{\frac{p-1}{2}\frac{q-1}{2}}
Proof?Proof?

模意义下的开平方#

pmod4=3p\bmod 4=3时,ap+14modpa^{\frac{p+1}{4}}\bmod p为一个解

CipollaCipolla算法#

求解x2a(modp)x^{2}\equiv a(\bmod p)
1.1.找到一个rr使得r2ar^{2}-a为模pp非二次剩余(amodp=0a\bmod p=0需要特判),期望两步找到,定义w2r2a(modp),wp11(modp)w^{2}\equiv r^{2}-a(\bmod p),w^{p-1}\equiv-1(\bmod p)
2.2.解为±(r+w)p+12\pm(r+w)^{\frac{p+1}{2}},(疑似需要复数类)

阶&原根#

#

对于aZ,mN+a\in Z,m\in N_{+}gcd(a,m)=1gcd(a,m)=1,满足同余式an1(modm)a^{n}\equiv 1(\bmod m)的最小正整数nn称为aamm的阶,记作δm(a)\delta_{m}(a)ordm(a)ord_{m}(a)

幂的循环结构#

1.1.对于aZ,mN+a\in Z,m\in N_{+}gcd(a,m)=1gcd(a,m)=1,幂次a0,a1,...,aδm(a)1a^{0},a^{1},...,a^{\delta_{m}(a)-1}mm两两不同余
2.2.对于a,nZ,mN+a,n\in Z,m\in N_{+}gcd(a,m)=1gcd(a,m)=1,同余式an1(modm)a^{n}\equiv 1(\bmod m)成立当且仅当δm(a)n\delta_{m}(a)\mid n
3.3.对于a,kZ,mN+a,k\in Z,m\in N_{+}gcd(a,m)=1gcd(a,m)=1,有δm(ak)=δm(a)gcd(δm(a),k)\delta_{m}(a^{k})=\frac{\delta_{m}(a)}{gcd(\delta_{m}(a),k)}
4.4.对于a,bZ,mN+a,b\in Z,m\in N_{+}gcd(a,m)=1,gcd(b,m)=1gcd(a,m)=1,gcd(b,m)=1,有 lcm(δm(a),δm(b))gcd(δm(a),δm(b))δm(ab)lcm(δm(a),δm(b))\frac{lcm(\delta_{m}(a),\delta_{m}(b))}{gcd(\delta_{m}(a),\delta_{m}(b))}\mid \delta_{m}(ab)\mid lcm(\delta_{m}(a),\delta_{m}(b))
gcd(δm(a),δm(b))=1<=>δm(ab)=δm(a)δm(b)gcd(\delta_{m}(a),\delta_{m}(b))=1<=>\delta_{m}(ab)=\delta_{m}(a)\delta_{m}(b) 5.5.对于a,bZ,mN+a,b\in Z,m\in N_{+}gcd(a,m)=1,gcd(b,m)=1gcd(a,m)=1,gcd(b,m)=1,cZ,gcd(c,m)=1\exists c\in Z,gcd(c,m)=1使得δm(c)=lcm(δm(a),δm(b))\delta_{m}(c)=lcm(\delta_{m}(a),\delta_{m}(b))

原根#

对于mN+,m\in N_{+},如果存在gZg\in Zgcd(g,m)=1gcd(g,m)=1使得δm(g)=φ(m)\delta_{m}(g)=\varphi(m),则称gg为模mm的原根

原根判定定理#

对整数m3m\geq3gcd(g,m)gcd(g,m)gg为模mm的原根,当且仅当对于φ(m)\varphi(m)的每个素因子ppgφ(m)p≢1(modm)g^{\frac{\varphi(m)}{p}}\not\equiv1(\bmod m)

原根个数#

mm的原根个数为φ(φ(m))\varphi(\varphi(m))

原根存在定理#

mm的原根存在,当且仅当m=1,2,4,pe,2pem=1,2,4,p^{e},2p^{e},其中pp为奇素数且eN+e \in N_{+}
Proof?Proof?

求原根的算法#

从小到大逐一枚举可能的数即可

CarmichaelCarmichael函数#

对于mN+m\in N_{+},定义λ(m)\lambda(m)为能使an1(modm)a^{n}\equiv 1(\bmod m)对所有gcd(a,m)=1gcd(a,m)=1都成立的最小正整数
λ(m)=lcm{δm(a):gcd(a,m)=1}\lambda(m)=lcm\{\delta_{m}(a):gcd(a,m)=1\}
幂的循环结构性质5知:λ(m)=max{δm(a):gcd(a,m)=1}\lambda(m)=max\{\delta_{m}(a):gcd(a,m)=1\}

递推公式#
引理#

gcd(m1,m2)=1,λ(m1m2)=lcm(λ(m1)λ(m2))gcd(m_{1},m_{2})=1,\lambda(m_{1}m_{2})=lcm(\lambda(m_1)\lambda(m_{2}))

引理#

对于m=2em=2^{e}eN+e\in N_{+},有λ(2)=1,λ(4)=2,\lambda(2)=1,\lambda(4)=2,且对于e3e\geq3λ(m)=2e2\lambda(m)=2^{e-2}

引理#

对于m=pem=p^{e}pp为奇素数且eN+e\in N_{+}λ(m)=pe1(p1)\lambda(m)=p^{e-1}(p-1)

定理#
λ(m)={φ(m),m=1,2,4,pe, p odd, eN+,12φ(m),m=2e, e3,lcm ⁣(λ(p1e1),λ(p2e2),,λ(pses)),m=p1e1p2e2pses.\begin{align} \lambda(m) = \begin{cases} \varphi(m), & m = 1,\, 2,\, 4,\, p^{e},\ p \text{ odd},\ e \in \mathbb{N}_{+}, \\[6pt] \dfrac{1}{2}\varphi(m), & m = 2^{e},\ e \ge 3, \\[6pt] \operatorname{lcm}\!\bigl(\lambda(p_{1}^{e_{1}}),\, \lambda(p_{2}^{e_{2}}),\, \dots,\, \lambda(p_{s}^{e_{s}})\bigr), & m = p_{1}^{e_{1}} p_{2}^{e_{2}} \cdots p_{s}^{e_{s}}. \end{cases} \end{align}

CarmichaelCarmichael#

对于合数nn,对所有满足gcd(a,n)=1gcd(a,n)=1的整数有an11(modn)a^{n-1}\equiv1(\bmod n),则nnCarmichaelCarmichael
KorseltKorselt判别法
合数nnCarmichaelCarmichael数当且仅当nn无平方因子且对于nn的任意质因子pp均有(p1)(n1)(p-1)\mid(n-1)

CarmichaelCarmichael数为奇数,没有平方因子,且至少有33个不同的素因子

离散对数#

定义#

取有原根的正整数mm,和其一原根gg,对满足gcd(a,m)=1gcd(a,m)=1,存在唯一整数0k<φ(m)0\leq k <\varphi(m),使得gka(modm)g^{k}\equiv a(\bmod m)
我们称这个kk为以gg为底,模mm的离散对数,记作k=indgak=ind_{g}a,
indg1=0,indgg=1ind_{g}1=0,ind_{g}g=1

性质#

gg是模mm的原根,gcd(a,m)=gcd(b,m)=1gcd(a,m)=gcd(b,m)=1
1.indg(ab)indga+indgb(modφ(m))1.ind_{g}(ab)\equiv ind_{g}a+ind_{g}b(\bmod \varphi(m))
2.g12.g_{1}也是模mm的原根,indgaindg1indgg1(modφ(m))ind_{g}a\equiv ind_{g_{1}}\cdot ind_{g}g_{1}(\bmod \varphi(m))
3.ab(modm)<=>indga=indgb3.a\equiv b(\bmod m)<=>ind_{g}a= ind_{g}b

BSGSBSGS大步小步算法#

O(m)O(\sqrt m)的时间内求解axb(modm),gcd(a,m)=1a^{x}\equiv b(\bmod m),gcd(a,m)=1
x=AmBx=A\lceil \sqrt m\rceil -B,其中0A,Bm0\leq A,B\leq\sqrt m,则aAmBb(modm)a^{A\lceil \sqrt m\rceil -B}\equiv b(\bmod m),也就是aAmbaB(modm)a^{A\lceil \sqrt m\rceil }\equiv ba^{B}(\bmod m) 然后预处理所有baBba^{B},在枚举aAma^{A\lceil \sqrt m\rceil }即可
可用hash/maphash/map存储,mapmap会多一个loglog

扩展BSGSBSGS算法#

求解axb(modm)a^{x}\equiv b(\bmod m)
就是想办法把底数和模数变得互质
d1=gcd(a,m),d1bd_{1}=gcd(a,m),d_{1}\nmid b无解,否则得到ad1ax1bd1(modmd1)\frac{a}{d_{1}}a^{x-1}\equiv \frac{b}{d_{1}}(\bmod \frac{m}{d_1})
d2=gcd(a,md1),d2bd1d_{2}=gcd(a,\frac{m}{d_{1}}),d_{2}\nmid \frac{b}{d_{1}}无解,否则得到a2d1d2ax2bd1d2(modmd1d2)\frac{a^{2}}{d_{1}d_{2}}a^{x-2}\equiv \frac{b}{d_{1}d_{2}}(\bmod \frac{m}{d_{1}d_{2}})
......
D=i=1kdi,akDaxkbD(modmD)D=\prod_{i=1}^{k}d_{i},\frac{a^{k}}{D}a^{x-k}\equiv \frac{b}{D}(\bmod \frac{m}{D})
转化成普通的BSGSBSGS问题

高次剩余&单位根#

高次剩余#

整数k2k\geq2,整数aa和正整数mm互素,若存在整数xx使得xka(modm)x^{k}\equiv a(\bmod m),则称aa为模mmkk次剩余,xxaammkk次方根;否则称aa为模mmkk次非剩余

定理#

设整数k2k\geq2,整数aa和正整数mm互素,设模mm的原根存在,且gg是模mm的一个原根,记d=gcd(k,φ(m)),d=φ(m)dd=gcd(k,\varphi(m)),d'=\frac{\varphi(m)}{d}
1.a1.a为模mmkk次剩余,当且仅当ad1(modm)a^{d'}\equiv 1(\bmod m)
2.2.aa为模mmkk次剩余时,在同余意义下,aamm恰好有dd个互不相同的kk次方根,且它们具有形式xgy0+id(modφ(m)),0y0<d,i=0,1,...,d1x\equiv g^{y_{0+id'}}(\bmod \varphi(m)),0\leq y_{0}<d',i=0,1,...,d-1
3.3.mmkk次剩余类的个数为dd',且它们全体就是{gdimodm:0i<d}\{g^{di}\bmod m:0\leq i<d'\}

ProofProof
gcd(a,m)=1,gcd(a,m)=1,gcd(x,m)=1gcd(x,m)=1,又gg为模mm的原根,所以aaxxgg的某次幂同余,设xgy(modm)x\equiv g^{y}(\bmod m),原方程等价于gkygindga(modm)g^{ky}\equiv g^{ind_{g}a}(\bmod m),等价于kyindga(modφ(m))ky\equiv ind_{g}a(\bmod \varphi(m)),该方程有解当且仅当dindga,d\mid ind_{g}a,且通解的形式为y=y0+idy=y_{0}+id'
对于ad1(modm)a^{d'}\equiv 1(\bmod m),又由阶的性质33δm(a)=δm(gindga)=φ(m)gcd(φ(m),indga)=φ(m)indga\delta_{m}(a)=\delta_{m}(g^{ind_{g}a})=\frac{\varphi(m)}{gcd(\varphi(m),ind_{g}a)}=\frac{\varphi(m)}{ind_{g}a},又方程有解当且仅当dindga,d\mid ind_{g}a,φ(m)dφ(m)δm(a)\frac{\varphi(m)}{d'}\mid\frac{\varphi(m)}{\delta_{m}(a)},也即δm(a)d\delta_{m}(a)\mid d'由阶的性质22其等价于ad1(modm)a^{d'}\equiv 1(\bmod m)

定理#

设整数k2k\geq2,奇数aa和正整数m=2e,e2m=2^{e},e\geq2
2k2\nmid k
1.a1.a恒为模mmkk次剩余
2.a2.ammkk次方根有且仅有一个
3.3.mmkk次剩余类个数为2e12^{e-1},且它们就是全体既约剩余类
2k2\mid k时,d=gcd(k,2e2),d=2e2dd=gcd(k,2^{e-2}),d'=\frac{2^{e-2}}{d}
1.a1.a为模mmkk次剩余当且仅当a1(mod4),ad1(modm)a\equiv 1(\bmod 4),a^{d'}\equiv 1(\bmod m)
2.2.aa为模mmkk次剩余时,同余意义下,aamm恰好有2d2d个互不相同的kk次方根,且他们具有相同的形式x±5y0+id(mod2e1),0y0<d,i=0,1,...,d1x\equiv\pm5^{y_{0}+id'}(\bmod 2^{e-1}),0\leq y_{0}<d',i=0,1,...,d-1
3.3.mmkk次剩余类的个数为dd',且他们的全体就是{5dimodm:0i<d}\{5^{di}\bmod m:0\leq i<d'\}

ProofProof
gcd(a,m)=1,gcd(a,m)=1,gcd(x,m)=1gcd(x,m)=1,因为a,xa,x为奇数,设a(1)s5r(mod2e),x(1)y5z(mod2e)a\equiv (-1)^{s}5^{r}(\bmod 2^{e}),x\equiv (-1)^{y}5^{z}(\bmod 2^{e}),则原方程等价于kzs(mod2),kyr(mod2e2)kz\equiv s(\bmod 2),ky\equiv r (\bmod 2^{e-2})
2k2\nmid k时总是有解
2k2\mid k时,第一个方程有解当且仅当2s2\mid s,即a1(mod4)a\equiv 1(\bmod 4),第二个条件有解当且仅当d=gcd(k,2)rd=gcd(k,2)\mid r同上知等价于ad1(modm)a^{d'}\equiv 1(\bmod m),根据两个方程,知解的形式为z0,1(mod2),y=y0+id(mod2e2),0y0<2e2z\equiv0,1(\bmod 2),y=y_{0}+id'(\bmod 2^{e-2}),0\leq y_{0}<2^{e-2}

单位根#

定义#

对于模数 𝑚,元素 11 的 𝑘次方根称为模 𝑚的 𝑘次单位根.特别地,如果 𝑥是模 𝑚的一个 𝑘 次单位根,且它不是模 𝑚 的任何 𝑘′ <𝑘 次单位根,那么,也称 𝑥为 模 𝑚 的 𝑘 次本原单位根 原根gg是模mmφ(m)\varphi(m)次本原单位根

性质#

模数mmλ(m)\lambda(m)为它的CarmichaelCarmichael函数
1.1.所有与mm互素的整数aa都是模mmδm(a)\delta_{m}(a)次本原单位根
2.2.元素aa是模mmkk次单位根,且kk'kk的任意倍数,那么aa也是模mmkk'次单位根
3.3.元素aa是模mmkk次(本原)单位根,那么元素ala^{l}是模mmkgcd(k,l)\frac{k}{gcd(k,l)}次(本原)单位根
4.4.kk'遍历kk的因数,所有模mmkk'次本原单位根恰好构成模mmkk次单位根的一个划分。对于gcd(l,k)=1,x>xlgcd(l,k)=1,x|->x^{l}给出kk次单位根之间的双射,且保持上述划分不变
5.5.mmkk次本原单位根存在,当且仅当kλ(m)k\mid\lambda(m),,特别的,模mmλ(m)\lambda(m)次本原单位根存在,称为模mmλ\lambda-原根
6.6.元素aa是模mmkk次单位根,当且仅当ak1(modm)a^{k}\equiv 1(\bmod m),且对任意素因子pk,akp≢1(modm)p\mid k,a^{\frac{k}{p}}\not\equiv1(\bmod m)

ProofProof
只证明55
CarmichaelCarmichael函数性质知,模mmλ(m)\lambda(m)次本原单位根总是存在,设为aa,且δm(a)=λ(m)\delta_{m}(a)=\lambda(m),对于kλ(m)k\mid \lambda(m),设k=λ(m)kk'=\frac{\lambda(m)}{k},总有δm(ak)=λ(m)gcd(λ(m),k)=λ(m)k=k\delta_{m}(a^{k'})=\frac{\lambda(m)}{gcd(\lambda(m),k')}=\frac{\lambda(m)}{k'}=k,因此aka^{k'}kk次本原单位根,又所有x,gcd(a,m)=1,x,gcd(a,m)=1,的阶都是λ(m)\lambda(m)的因子,故由性质55

定理#

xxaamm的一个kk次方根,当rr遍历模mm的全体kk次单位根时,xrxr遍历aamm的全体kk次方根

定理#

对于模数mm,设模mm的原根存在,且aa是模mmkk次本原单位根,那么bbkk次单位根,当且仅当它可以表示为aa的幂次

模意义下的开方#

改良TonelliShanksTonelli-Shanks算法#

求解xka(modm),mx^{k}\equiv a(\bmod m),m为素数幂
特别的对于m=2em=2^{e}的情形,还要保证a1(mod4)a\equiv 1(\bmod 4),将φ(m)\varphi(m)换成δm(5)=2e2\delta_{m}(5)=2^{e-2}
d=gcd(k,φ(m))d=gcd(k,\varphi(m)),当aa是模mmkk次剩余时,aa总是模mmφ(m)d\frac{\varphi(m)}{d}次单位根,对任意gcd(l,φ(m)d)=1,x>xlgcd(l,\frac{\varphi(m)}{d})=1,x->x^{l}为单位根之间的双射,取l=(kd)1(modφ(m)d)l=(\frac{k}{d})^{-1}(\bmod \frac{\varphi(m)}{d}) 原方程两边同时取ll次幂xdxklalb(modm)x^{d}\equiv x^{kl}\equiv a^{l}\equiv b(\bmod m) 左边是因为ld1k1(modφ(m))ld^{-1}\equiv k^{-1}(\bmod \varphi(m)),则dkl(modφ(m))d\equiv kl(\bmod \varphi(m))
考虑d=pPped=\prod_{p\in P}p^{e},从bb开始以次开pep^{e}即可
即求解xpeb(modm)x^{p^{e}}\equiv b(\bmod m)
φ(m)=psr,gcd(p,r)=1\varphi(m)=p^{s}r,gcd(p,r)=1,设qN+,qr1(modpe)q\in N_{+},qr\equiv-1(\bmod p^{e}),由于bbrpserp^{s-e}次单位根,那么bqrb^{qr}psep^{s-e}次单位根,设ζ\zeta是模mmpsp^{s}次本原单位根,那么ζpe\zeta^{p^{e}}psep^{s-e}次本原单位根,存在h,bqrζhpe(modm)h,b^{qr}\equiv\zeta^{hp^{e}}(\bmod m)可知xbqr+1peζh(modm)x\equiv b^{\frac{qr+1}{p^{e}}}\zeta^{-h}(\bmod m) 为计算上式,需要找到摸 mm的一个pp次非剩余η\eta,则有ηrps1≢1(modm),ηrps1(modm)\eta^{rp^{s-1}}\not\equiv1(\bmod m),\eta^{rp^{s}}\equiv1(\bmod m)ζ=ηr(modm),ξ=ηrps1(modm)\zeta=\eta^{r}(\bmod m),\xi=\eta^{rp^{s-1}}(\bmod m)分别为psp^{s}pp次本原单位根
计算hh,取h<pseh<p^{s-e},考虑pp进制h=j=0se1hjpjh=\sum_{j=0}^{s-e-1}h_{j}p^{j}当前jj为计算完时(bqrζpe(h0+...+hj1pj1))psej1ζhjpe1ξhj(modm)(b^{qr}\zeta^{-p^{e}(h_{0}+...+h_{j-1}p^{j-1})})^{p^{s-e-j-1}}\equiv\zeta^{h_{j}p^{}e-1}\equiv\xi^{h_{j}}(\bmod m) 可用BSGSBSGS计算

一般情形#

m=pe,gcd(a,m)>1m=p^{e},gcd(a,m)>1
a0(modm),x=pekl(modpe),l=0,1,...,peek1a\equiv0(\bmod m),x=p^{\lceil\frac{e}{k}\rceil}l(\bmod p^{e}),l=0,1,...,p^{e-\lfloor\frac{e}{k}\rfloor-1}
a≢0(modm),a=psa,gcd(a,p)=1,x=pzx,gcd(x,p)=1a\not\equiv0(\bmod m),a=p^{s}a',gcd(a',p)=1,x=p^{z}x',gcd(x',p)=1xk=pkz(x)kpsa(modpe)x^{k}=p^{kz}(x')^{k}\equiv p^{s}a'(\bmod p^e),该方程有解当且仅当kz=s,(x)ka(modpes)kz=s,(x')^{k}\equiv a'(\bmod p^{e-s}),最终解为xpsk(x+lpes)(modpe),l=0,1,...,pssk1x\equiv p^{\frac{s}{k}}(x'+lp^{e-s})(\bmod p^{e}),l=0,1,...,p^{s-\frac{s}{k}}-1

多项式#

组合数学#