定义

若数论函数ff满足对任意i,ji,j互质,满足f(ij)=f(i)f(j)f(i*j)=f(i)*f(j),则称f为积性函数。
特别的,若对任意i,ji,j都满足f(ij)=f(i)f(j)f(i*j)=f(i)*f(j),则称ff为完全积性函数。

常见积性函数

e(n)=[n==1]e(n)=[n==1]

1(n)=11(n)=1

id(n)=nid(n)=n

idk(n)=nkid^k(n)=n^k

μ(n)\mu(n)

φ(n)\varphi(n)

d(n)=in1d(n)=\sum_{i|n}1

σ(n)=ini\sigma(n)=\sum_{i|n}i

前四个是完全积性函数,后四个是数论积性函数。

狄利克雷卷积

μ1=e\mu*1=e

φ1=id\varphi*1=id

μid=φ\mu*id=\varphi

(φidk)idk=idk+1(\varphi\cdot id^k)*id^k=id^{k+1}

因为对于每个 f(1)=0f(1)\not = 0 的函数都有逆元,我们可以直接 O(nlogn)O(n\log n) 递推得到一个函数的逆,具体的是考虑贡献,因为 nn 以内的狄利克雷卷积的计算次数是约数个数和即 O(nlogn)O(n\log n),我们只要把这些都精准枚举到即可。

性质和算法

积性函数的逆元也是积性函数。
两个积性函数的乘积或狄利克雷卷积还是积性函数。
对于积性函数,只要探究出f(pk)f(p^k)的表达式,即可以用欧拉线性筛线性求出。
杜教筛。咕咕咕

一些奇怪的公式

d(ij)=xiyj[gcd(x,y)=1]d(ij)=\sum_{x|i}\sum_{y|j}[gcd(x,y)=1]

证明(来自洛谷题解):

我们考虑把每个因子一一映射。
如果ijij的因子中有一个因子pcp^c,ii中有因子pap^a,jj中有因子pbp^b。我们规定:

  • 如果cac\leqslant a,那么在ii中选择。
  • 如果c>ac>a,那么我们把cc减去aa,在jj中选择pcap^{c-a}(在jj中选择pep^e表示的是pa+ep^{a+e})
    对于ijij的因子kk的其他因子同理。于是对于任何一个kk有一个唯一的映射,且每一个选择对应着唯一的k。
    通过如上过程,我们发现:对于ijij的因子k=picik=\prod p_i^{c_i},我们不可能同时在iijj中选择pip_i(优先在ii 中选择,如果不够就只在jj中选择不够的指数),故xxyy必须互质。
    等式得证。

φ(ij)=φ(i)φ(j)gcd(i,j)φ(gcd(i,j))\varphi(ij)=\frac{\varphi(i)\varphi(j)\gcd(i,j)}{\varphi(\gcd(i,j))}

μ(ij)=μ(i)μ(j)[gcd(i,j)=1]\mu(ij)=\mu(i)\mu(j)[gcd(i,j)=1]