数论分块

数论分块可以在 O(N)O(\sqrt{N})​ 的时间复杂度求出以下式子的值:

i=1nni\sum_{i=1}^{n}\lfloor{\frac{n}{i}}\rfloor

通过打表发现,有许多 ni\lfloor{\frac{n}{i}}\rfloor​​ 的值是相同的且呈块状分布,设一段相同的值起始位置为 ll​​ ,则其终止位置为

nni\lfloor{\frac{n}{\lfloor{\frac{n}{i}}\rfloor } }\rfloor

证明

p=nlp=\lfloor{\frac{n}{l}}\rfloor​,则 n=lp+cn=lp+c

若存在 ΔNΔ \in N​,使得 nl+Δ=p\lfloor{\frac{n}{l+Δ}}\rfloor=p​,则 n=(l+Δ)p+cn=(l+Δ)p+c'

lp+c=(l+Δ)p+c\therefore lp+c=(l+Δ)p+c'

lp+c=(l+Δ)p+clp+c=lp+Δp+cc=Δp+cΔp=ccΔ=cpcp\begin{aligned} lp+c&=(l+Δ)p+c'\\ lp+c&=lp+Δp+c'\\ c&=Δp+c'\\ Δp&=c-c'\\ Δ&=\frac{c}{p}-\frac{c'}{p} \end{aligned}

显然,Δmax=cpΔ_{max}=\lfloor{\frac{c}{p}} \rfloor

r=l+cp=plp+cp=npl+plp=nni\begin{aligned} \therefore r&=l+\lfloor{\frac{c}{p}} \rfloor\\ &=\lfloor{\frac{pl}{p}}+\frac{c}{p}\rfloor\\ &=\lfloor{\frac{n-pl+pl}{p}}\rfloor\\ &= \lfloor{\frac{n}{\lfloor{\frac{n}{i}}\rfloor } }\rfloor \end{aligned}

所以每个块的区间为:[l,nni][l, \lfloor{\frac{n}{\lfloor{\frac{n}{i}}\rfloor } }\rfloor ]​可以一直不断地跳区间即可

code

1
2
3
4
for(int l=1,r;l<=n;l=r+1){
r=n/(n/l);
ans+=(r-l+1)*(n/l);
}

一些常见积性函数(务必记住一下函数的符号记法)

  • 常数函数
  • 单位函数: ε\varepsilon​ (下文提及)
  • 恒等函数: id(n)=nid(n)=n
  • 欧拉函数: φ(n)=i=1n[gcd(i,n)=1]\varphi(n)=\sum_{i=1}^n [gcd(i,n)=1]​ (不会证明其为积性函数的建议去重修欧拉函数)
  • 除数函数1:d(n)=dn1d(n)=\sum_{d|n}1 (就是 nn 约数个数,根据定义证明即可)
  • 除数函数22:σ(n)=dnd\sigma(n)=\sum_{d|n}d )(nn​ 约数和,根据定义证明即可)​
  • 莫比乌斯函数 w(n)w(n)nn 本质不同质因子个数(就是有多少个不同的质因子)

狄利克雷卷积

对于两个数论函数 f(x)f(x)g(x)g(x),定义其狄利克雷卷积的结果 h(x)h(x) 为:

h(x)=dxf(d)g(nd)h(x)=\sum_{d|x}f(d)g(\frac{n}{d})

简记为:h=fgh=f*g

显然,狄利克雷卷积满足一下性质:

交换律 :fg=gff*g=g*f

结合律:(fg)h=f(gh)(f*g)*h=f*(g*h)

分配律 : (f+g)h=fh+gh(f+g)*h=f*h+g*h

狄利克雷卷积运算的单位元:

ε\varepsilon​​ 函数是狄利克雷卷积运算的单位元,即对于任意的数论函数 ff​,都有 fε=ff*\varepsilon=f

通过简单手算可知,ε(n)=[n=1]\varepsilon(n)=[n=1]

一些简单却非常重要的卷积例子:

我们将详细地给出下面四个例子的证明

1) 证:

dnμ(d)\sum_{d|n}\mu(d)n=1n=1 时显然等于 ε(1)\varepsilon(1),我们来证明在 n>1n>1 时上式定为 00

由算术基本定理(唯一分解定理)可得:

n=p1k1×p2k2×...×pmkmn=p_1^{k_1}\times p_2^{k_2}\times...\times p_m^{k_m}​​

则有:

d=i=1mpici , ci[0,ki] and cNd=\prod_{i=1}^{m}p_i^{c_i}\ ,\ c_i\in[0,k_i]\ and \ c\in N

其实就因为 ddnn 的因数,所以每一个 dd 定可以从 nn 的质因子中选出一坨相乘来表示

根据莫比乌斯函数的定义,如果 dd 选取的质数中出现一个质数的指数 cic_i 大于等于 22,则说明其有一个完全平方数因子,则 μ(d)\mu(d) 的值为 00,对 dn\sum_{d|n} 的贡献为 00

由此可知,对 dn\sum_{d|n}​ 有贡献的 cic_i​​ 的值定为 00​ 或 11​ ,那么在 mm​ 个质数中,每个质数的指数只有两种取值,总的来说共有 2m2^m​ 种取值。显然,i=1mci\sum_{i=1}^{m} c_i​ 的值有一半为奇数,有一半为偶数,再结合莫比乌斯函数的定义来看,正负相抵,总的值也就为 00

证毕。

2) 式过于简单,证明略

3)3) 式过于简单,证明略

4)4) 证:

欧拉函数性质: n=dnφ(d)n=\sum_{d|n} \varphi(d)

f(n)=dnφ(d)f(n)=\sum_{d|n}\varphi(d),我们来证明 ff​​ 为积性函数

n,mN+,gcd(n,m)=1f(n)×f(m)=dnφ(d)×dmφ(d)=dndmφ(d)×φ(d)=dndmφ(d×d)=dnmφ(d)=f(nm)n,m\in\N_+,gcd(n,m)=1\\ \begin{aligned} f(n)\times f(m)&=\sum_{d|n}\varphi(d)\times \sum_{d'|m}\varphi(d') \\ &=\sum_{d|n}\sum_{d'|m}\varphi(d)\times \varphi(d')\\ &=\sum_{d|n}\sum_{d'|m}\varphi(d\times d')\\ &=\sum_{d''|nm}\varphi(d'')=f(nm) \end{aligned}

说一下等式变化的第三步,由于 n,mn,m 的互质,所以 d×dd\times d' 其实上枚举了 n×mn\times m​​ 的所有因数

综上可知,ff 为积性函数

由算数基本定理得:

n=p1c1×p2c2×...×pkckf(n)=f(p1c1)×f(p2c2)×...×f(pkck)f(pk)=φ(1)+φ(p)+φ(p2)+..+φ(pk)=1+(p1)+(p2p)+...+(pkpk1)=pkn=i=1kf(pici)=i=1kpici=nn=dnφ(d)n=p_1^{c_1}\times p_2^{c_2}\times ...\times p_k^{c_k}\\ \therefore f(n)=f(p_1^{c_1})\times f(p_2^{c_2})\times ...\times f(p_k^{c_k})\\ f(p^k)=\varphi(1)+ \varphi(p)+ \varphi(p^2)+..+\varphi(p^k)=1+(p-1)+(p^2-p)+...+(p^k-p^{k-1})=p^k\\ n=\prod_{i=1}^k f(p_i^{c_i})=\prod_{i=1}^{k}p_{i}^{c_i}=n\\ \therefore n=\sum_{d|n}\varphi(d)

n=dnφ(d)φ1=ididμ=φ1μidμ=φεidμ=φn=\sum_{d|n}\varphi(d)\Longleftrightarrow \varphi*1=id\\ \begin{aligned} \therefore id*\mu&=\varphi*1*\mu\\ id*\mu&=\varphi*\varepsilon\\ id*\mu&=\varphi \end{aligned}

证毕。

Edited on Views times