定义
若数论函数f满足对任意i,j互质,满足f(i∗j)=f(i)∗f(j),则称f为积性函数。
特别的,若对任意i,j都满足f(i∗j)=f(i)∗f(j),则称f为完全积性函数。
常见积性函数
e(n)=[n==1]
1(n)=1
id(n)=n
idk(n)=nk
μ(n)
φ(n)
d(n)=i∣n∑1
σ(n)=i∣n∑i
前四个是完全积性函数,后四个是数论积性函数。
狄利克雷卷积
μ∗1=e
φ∗1=id
μ∗id=φ
(φ⋅idk)∗idk=idk+1
因为对于每个 f(1)=0 的函数都有逆元,我们可以直接 O(nlogn) 递推得到一个函数的逆,具体的是考虑贡献,因为 n 以内的狄利克雷卷积的计算次数是约数个数和即 O(nlogn),我们只要把这些都精准枚举到即可。
性质和算法
积性函数的逆元也是积性函数。
两个积性函数的乘积或狄利克雷卷积还是积性函数。
对于积性函数,只要探究出f(pk)的表达式,即可以用欧拉线性筛线性求出。
杜教筛。咕咕咕
一些奇怪的公式
d(ij)=x∣i∑y∣j∑[gcd(x,y)=1]
证明(来自洛谷题解):
我们考虑把每个因子一一映射。
如果ij的因子中有一个因子pc,i中有因子pa,j中有因子pb。我们规定:
- 如果c⩽a,那么在i中选择。
- 如果c>a,那么我们把c减去a,在j中选择pc−a(在j中选择pe表示的是pa+e)
对于ij的因子k的其他因子同理。于是对于任何一个k有一个唯一的映射,且每一个选择对应着唯一的k。
通过如上过程,我们发现:对于ij的因子k=∏pici,我们不可能同时在i和j中选择pi(优先在i 中选择,如果不够就只在j中选择不够的指数),故x和y必须互质。
等式得证。
φ(ij)=φ(gcd(i,j))φ(i)φ(j)gcd(i,j)
μ(ij)=μ(i)μ(j)[gcd(i,j)=1]