莫比乌斯函数

定义

莫比乌斯函数是一个数论函数,定义如下:

μ(n)={1,n=1(1)k,nk个不同质数的乘积0,n含有平方因子\mu(n)= \begin{cases} 1,\quad n=1 \\ (-1)^k,\quad \text{$n$是$k$个不同质数的乘积}\\ 0,\quad \text{$n$含有平方因子} \end{cases}

例如:

μ(1)=1,μ(2)=1,μ(6)=1,μ(12)=0\mu(1)=1,\mu(2)=-1,\mu(6)=1,\mu(12)=0

性质

莫比乌斯函数是积性函数,也就是:

(m,n)=1μ(mn)=μ(m)μ(n)(m,n)=1\Rightarrow \mu(mn)=\mu(m)\mu(n)

恒等式

下面的恒等式十分重要:

ϵ(n)=dnμ(n)={1,n=10,n>1\epsilon(n)=\sum_{d\mid n}\mu(n)= \begin{cases} 1,\quad n=1\\ 0,\quad n>1 \end{cases}

我们称 ϵ(n)\epsilon(n) 为单位函数
这个恒等式是符合直觉的:假设 nn 的不同质因子个数为 rr,从中挑选一个子集相乘就可以得到 nn 的一个因子 dd,所以:

  • 无平方因子有 2r2^r
  • 其中:
    • 2r12^{r-1} 个具有偶数个质因子(μ=1\mu=1
    • 2r12^{r-1} 个具有奇数个质因子(μ=1\mu=-1

把它们加起来,结果为0。这说明了因子的“计数对称性”
这个恒等式有一个常见应用:

[ij]=[(i,j)=1]=d(i,j)μ(d)=d[di][dj]μ(d)[i\perp j]=[(i,j)=1]=\sum_{d\mid(i,j)}\mu(d)=\sum_d[d\mid i][d\mid j]\mu(d)

它将互素的条件转化为关于莫比乌斯函数的求和式,方便进一步推导

求法

如果只需要计算单个 nn 的莫比乌斯函数值 μ(n)\mu(n),直接根据定义,对 nn 进行质因数分解即可,时间复杂度为 O(n)O(\sqrt{n})
当然,莫比乌斯函数是积性函数,可以利用线性筛求出 nn 以内的所有莫比乌斯函数值,时间复杂度为 O(n)O(n)

狄利克雷卷积

数论函数 f(n)f(n)g(n)g(n)狄利克雷卷积 ,记作 fgf*g,定义为数论函数

(fg)(n)=knf(k)g(nk)=kl=nf(k)g(l)(f*g)(n)=\sum_{k\mid n}f(k)g(\frac{n}{k})=\sum_{kl=n}f(k)g(l)

单位函数 ϵ\epsilon 是莫比乌斯函数 μ\mu 和常数函数 11 的狄利克雷卷积:

ϵ=μ1ϵ(n)=dnμ(d)\epsilon=\mu*1\Leftrightarrow \epsilon(n)=\sum_{d\mid n}\mu(d)

约数个数函数 rr 是常数函数 11 和它自身的狄利克雷卷积:

r=11r(n)=dn1r = 1*1 \Leftrightarrow r(n)=\sum_{d\mid n} 1

约数和函数 σ\sigma 是恒等函数 idid 和常数函数 11 的狄利克雷卷积:

σ=id1σ(n)=dnd\sigma=id*1\Leftrightarrow \sigma(n)=\sum_{d\mid n}d

欧拉函数 ϕ\phi 是恒等函数 idid 和莫比乌斯函数 μ\mu 的狄利克雷卷积:

ϕ=idμϕ(n)=dndμ(nd)\phi=id*\mu\Leftrightarrow \phi(n)=\sum_{d\mid n} d\cdot \mu(\frac{n}{d})

性质

狄利克雷卷积满足交换律、结合律、分配律,这里不一一证明。并且,如果把狄利克雷卷积看成一个数论函数上的二元关系,可以发现其单位元、零元和逆元:

  • 单位元:ϵ(n)\epsilon(n),这是因为有 (fϵ)(n)=dnf(d)ϵ(n/d)=f(n)(f*\epsilon)(n)=\sum_{d\mid n}f(d)\epsilon(n/d)=f(n),因为只有 d=nd=nϵ(n/d)=1\epsilon(n/d)=1,其余为0
  • 零元:全零函数 00
  • 逆元:数论函数 ff 的狄利克雷逆元 gg 满足 fg=ϵf*g=\epsilon,特别的,有 (fg)(1)=f(1)g(1)=1(f*g)(1)=f(1)g(1)=1,所以,ff 的狄利克雷逆元存在,当且仅当 f(1)0f(1)\ne 0

数论函数 ff 的狄利克雷函数的值是可以递推计算的,首先有:

g(1)=1f(1)g(1)=\frac{1}{f(1)}

接下来,当 n>1n>1 时:

(fg)(n)=dnf(d)g(nd)=ϵ(n)=0(f*g)(n)=\sum_{d\mid n}f(d)g(\frac{n}{d})=\epsilon(n)=0

dd 分成 1<dn1<d\le nd=1d=1 两类,就有:

dn,1<dnf(d)g(nd)+f(1)g(n)=0\sum_{d\mid n,1<d\le n} f(d)g(\frac{n}{d})+f(1)g(n)=0

g(n)g(n) 解出来,就有:

g(n)=dn,d1f(d)g(nd)f(1)g(n)=-\frac{\sum_{d\mid n,d\ne 1}f(d)g(\frac{n}{d})}{f(1)}

这样就可以递推求解了
同时易证:两个积性函数的狄利克雷卷积也是一个积性函数,这可以帮助我们判断形如 dnf(d)g(nd)\sum_{d\mid n}f(d)g(\frac{n}{d}) 的积性,从而判断能否使用线性筛法

莫比乌斯反演

对于一些函数 f(n)f(n),如果很难直接求出他的值,但是容易求出其倍数和或约数和 g(n)g(n),那么就可以使用莫比乌斯反演简化计算
f,gf,g 是两个数论函数,则有:

f(n)=dng(d)g(n)=dnμ(nd)f(d)f(n)=\sum_{d\mid n}g(d)\Leftrightarrow g(n)=\sum_{d\mid n}\mu(\frac{n}{d})f(d)

写成狄利克雷卷积的形式,有:

f=1gg=μff=1*g\Leftrightarrow g=\mu*f

这个证明是显然的,因为前面我们知道,单位函数 ϵ\epsilon 是莫比乌斯函数 μ\mu 和常数函数 11 的狄利克雷卷积,在左式两边同时对 μ\mu 做狄利克雷卷积,就有:

fμ=(1g)μ=(1μ)g=ϵg=gf*\mu=(1*g)*\mu=(1*\mu)*g=\epsilon*g=g

欧拉函数 ϕ(n)\phi(n) 满足 n=dnϕ(d)n=\sum_{d\mid n}\phi(d),即 id=1ϕid=1*\phi,对其反演得到 ϕ=μid\phi=\mu*id,即

ϕ(n)=dndμ(nd)\phi(n)=\sum_{d\mid n}d\mu(\frac{n}{d})

除数函数 σk(n)=dndk\sigma_k(n)=\sum_{d\mid n}d^k,即 σk=1idk\sigma_k=1*id_k,对其反演得到 idk=μσkid_k=\mu*\sigma_k,即

nk=dnμ(nd)σk(d)n^k=\sum_{d\mid n}\mu(\frac{n}{d})\sigma_k(d)

我们之前考虑的反演都是对于 nn 的某一因数 dd,当然也可以考虑其倍数:

f(n)=ndg(d)g(n)=ndμ(dn)f(d)f(n)=\sum_{n\mid d}g(d)\Leftrightarrow g(n)=\sum_{n\mid d}\mu(\frac{d}{n})f(d)

证明略,这是显然的

狄利克雷前缀和

用处不大,了解一下就好
考虑基本的莫比乌斯反演关系:

f(n)=dng(d)f(n)=\sum_{d\mid n}g(d)

假如说知道 {g(k)}k=1n\left \{ g(k)\right \}_{k=1}^n 的值,我们可以使用类似前缀和的方式来求出{f(k)}k=1n\left \{ f(k)\right \}_{k=1}^n 的值,只需要考虑因数 ddf(k)f(k) 的贡献,将其累加起来即可
对于高维前缀和,我们有一种求法是:遍历所有的维度,并将每个位置的值都累加到该位置在该位置上的后继位置,在这个问题中,我们可以考虑每个素数 pp,和 pp 同维的位置有 2p,3p,2p,3p,\dots,考虑到 npnp 时,只需要将 nn 处的函数值加到 npnp 处即可
这个遍历顺序和埃氏筛是一致的,因此我们可以在 O(nloglogn)O(n\log \log n) 的时间内计算出 {f(k)}k=1n\left \{ f(k)\right \}_{k=1}^n 的值,我们称其为狄利克雷前缀和

常见变形

gcd和lcm相关的变形

[(i,j)=k][(i,j)=k] 可以转化成 [(ik,jk)=1][(\frac{i}{k},\frac{j}{k})=1],用莫比乌斯函数的性质就可以转化成 d[dik][djk]μ(d)\sum_d[d\mid \frac{i}{k}][d\mid \frac{j}{k}]\mu(d)
例如,求下面式子的值:

f(n,m,k)=i=xnj=ym[(i,j)=k]f(n,m,k)=\sum_{i=x}^{n}\sum_{j=y}^{m}[(i,j)=k]

做如下变换:

f(n,m,k)=i=xnj=ym[(i,j)=k]=i=xknkj=ykmk[(i,j)=1]=i=xknkj=ykmkd[di][dj]μ(d)=dμ(d)i=xknk[di]j=ykmk[dj]=dμ(d)(nkdxk1d)(mkdyk1d)\begin{aligned} f(n,m,k)&=\sum_{i=x}^{n}\sum_{j=y}^{m}[(i,j)=k] \\ &=\sum_{i=\left \lceil \frac{x}{k} \right \rceil }^{\left \lfloor \frac{n}{k} \right \rfloor }\sum_{j=\left \lceil \frac{y}{k} \right \rceil}^{\left \lfloor \frac{m}{k} \right \rfloor }[(i,j)=1] \\ &=\sum_{i=\left \lceil \frac{x}{k} \right \rceil }^{\left \lfloor \frac{n}{k} \right \rfloor }\sum_{j=\left \lceil \frac{y}{k} \right \rceil}^{\left \lfloor \frac{m}{k} \right \rfloor }\sum_d[d\mid i][d\mid j]\mu(d) \\ &=\sum_d\mu(d)\sum_{i=\left \lceil \frac{x}{k} \right \rceil }^{\left \lfloor \frac{n}{k} \right \rfloor }[d\mid i]\sum_{j=\left \lceil \frac{y}{k} \right \rceil}^{\left \lfloor \frac{m}{k} \right \rfloor }[d\mid j] \\ &=\sum_d\mu(d)(\left \lfloor \frac{\left \lfloor \frac{n}{k} \right \rfloor }{d} \right \rfloor-\left \lfloor \frac{\left \lceil \frac{x}{k} \right \rceil -1}{d} \right \rfloor)(\left \lfloor \frac{\left \lfloor \frac{m}{k} \right \rfloor }{d} \right \rfloor-\left \lfloor \frac{\left \lceil \frac{y}{k} \right \rceil -1}{d} \right \rfloor) \end{aligned}

推导的过程运用了莫比乌斯函数的性质,以及区间内倍数个数的计算(容斥原理)
这个公式接下来可以把后面的两个括号拆开在展开整理一下,能够得到四项,其中每一项都是如下的乘积形式:

dμ(d)UdVd\sum_d\mu(d)\left \lfloor \frac{U}{d} \right \rfloor \left \lfloor \frac{V}{d} \right \rfloor

只需要线性筛一下莫比乌斯函数,求一下前缀和,就可以使用数论分块来求解这个式子,对于原式只需要进行四个值的组合即可,时间复杂度为 O(N+N)O(N+\sqrt{N})


求下面式子的值:

S(n)=i=1nlcm(i,n)S(n)=\sum_{i=1}^n\text{lcm}(i,n)

首先,先转化成gcd;

S(n)=i=1nin(i,n)=ni=1ni(i,n)\begin{aligned} S(n)&=\sum_{i=1}^n\frac{in}{(i,n)} \\ &=n\sum_{i=1}^n\frac{i}{(i,n)} \end{aligned}

d=(i,n)d = (i,n),那么每个 ii 必须写成 i=dji=dj,则有 (j,nd)=1(j,\frac{n}{d})=1,代回去得:

S(n)=ndn1jndj[(j,nd)=1]S(n)=n\sum_{d\mid n}\sum_{1\le j\le \frac{n}{d}}j[(j,\frac{n}{d})=1]

注意到 1jndj[(j,nd)=1]\sum_{1\le j\le \frac{n}{d}}j[(j,\frac{n}{d})=1] 表示 [1,nd][1,\frac{n}{d}] 中与 nd\frac{n}{d} 互质的数的和,自然联想到欧拉函数 ϕ\phi,当 nd>1\frac{n}{d}>1 时,ϕ(nd)\phi(\frac{n}{d}) 总是偶数,这是因为假如 indi\perp \frac{n}{d},那么 ndind\frac{n}{d}-i\perp \frac{n}{d},它们是成对出现的,并且它们的和为 nd\frac{n}{d},故原式转化为:

S(n)=ndnϕ(nd)nd2=ndnϕ(d)d2S(n)=n\sum_{d\mid n}\frac{\phi(\frac{n}{d})\frac{n}{d}}{2}=n\sum_{d\mid n}\frac{\phi(d)d}{2}

接下来线性筛一下欧拉函数即可


求下面表达式的值:

f(n,m)=i=1nj=1mlcm(i,j)f(n,m)=\sum_{i=1}^n\sum_{j=1}^{m}\text{lcm}(i,j)

依旧lcm转化成gcd,得到:

f(n,m)=i=1nj=1mij(i,j)=i=1nj=1mkijk[(i,j)=k]=i=1nkj=1mkkkij[(i,j)=1]=i=1nkj=1mkkkijd[di][dj]μ(d)=kkdμ(d)(i=1nki[di])(j=1mkj[dj])\begin{aligned} f(n,m)&=\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{(i,j)} \\ &=\sum_{i=1}^n\sum_{j=1}^m\sum_{k}\frac{ij}{k}[(i,j)=k] \\ &=\sum_{i=1}^{\left \lfloor \frac{n}{k} \right \rfloor}\sum_{j=1}^{\left \lfloor \frac{m}{k} \right \rfloor}\sum_kkij[(i,j)=1] \\ &=\sum_{i=1}^{\left \lfloor \frac{n}{k} \right \rfloor}\sum_{j=1}^{\left \lfloor \frac{m}{k} \right \rfloor}\sum_kkij\sum_d[d\mid i][d\mid j]\mu(d) \\ &=\sum_kk\sum_d\mu(d)(\sum_{i=1}^{\left \lfloor \frac{n}{k} \right \rfloor}i[d\mid i])(\sum_{j=1}^{\left \lfloor \frac{m}{k} \right \rfloor}j[d\mid j]) \end{aligned}

对于后面的两个式子,显然有:

i=1nki[di]=di=1nkdi=nkd(nkd+1)d2\begin{aligned} \sum_{i=1}^{\left \lfloor \frac{n}{k} \right \rfloor}i[d\mid i]&=d\sum_{i=1}^{\left \lfloor \frac{\left \lfloor \frac{n}{k} \right \rfloor}{d} \right \rfloor} i \\ &=\frac{\left \lfloor \frac{\left \lfloor \frac{n}{k} \right \rfloor}{d} \right \rfloor(\left \lfloor \frac{\left \lfloor \frac{n}{k} \right \rfloor}{d} \right \rfloor+1)d}{2} \end{aligned}

可知后面两个式子可以数论分块计算,但是我们需要知道前面两个和式的前缀和,令 G(n)=n(n+1)2G(n)=\frac{n(n+1)}{2},做换元 l=kdl=kd,式子化为:

f(n,m)=lldlμ(d)dG(nl)G(ml)\begin{aligned} f(n,m)&=\sum_ll\sum_{d\mid l}\mu(d)dG(\left \lfloor \frac{n}{l} \right \rfloor)G(\left \lfloor \frac{m}{l} \right \rfloor) \end{aligned}

发现函数 F(l)=ldlμ(d)dF(l)=l\sum_{d\mid l}\mu(d)d 是积性函数,可以直接线性筛并求出它的前缀和,然后就可以使用数论分块计算 f(n,m)f(n,m) 的值了