定义:
对于两个数论函数 f ( x ) , g ( x ) f(x),g(x) f(x),g(x) 那么它们的卷积 h ( x ) h(x) h(x) 记作 f ( x ) ∗ g ( x ) f(x) * g(x) f(x)∗g(x),式子如下:
f ( x ) ∗ g ( x ) = h ( x ) = ∑ d ∣ n f ( d ) g ( n d ) f(x) * g(x) = h(x) = \sum_{d \mid n} f(d)g(\frac{n}{d}) f(x)∗g(x)=h(x)=d∣n∑f(d)g(dn)
简记为 h = f ∗ g h = f * g h=f∗g
性质:
交换律: f ∗ g = g ∗ f f * g = g * f f∗g=g∗f
结合律: ( f ∗ g ) ∗ h = f ∗ ( g ∗ h ) (f * g) * h = f * (g * h) (f∗g)∗h=f∗(g∗h)
分配律: ( f + g ) ∗ h = f ∗ h + g ∗ h (f + g) * h = f * h + g * h (f+g)∗h=f∗h+g∗h
单位元: 对 ∀ f ( x ) , f ∗ ε = f \forall f(x), f * \varepsilon = f ∀f(x),f∗ε=f
逆元: 对一个非零的数论函数 f ( x ) f(x) f(x),和另一个数论函数 g ( x ) g(x) g(x) 满足 f ∗ g = ε f*g=\varepsilon f∗g=ε,则称 g ( x ) g(x) g(x) 为 f ( x ) f(x) f(x) 的逆元。
g ( x ) = ε − ∑ d ∣ x , d ≠ 1 f ( d ) g ( x d ) f ( 1 ) g(x) = \dfrac{\varepsilon - \sum \limits_{d \mid x,d \ne 1} f(d)g(\dfrac{x}{d})}{f(1)} g(x)=f(1)ε−d∣x,d=1∑f(d)g(dx)
积性函数的逆元还是积性函数
两个积性函数的狄利克雷卷积还是积性函数
常见积性函数:
1. 莫比乌斯函数: μ ( x ) \mu(x) μ(x)
设 n = p 1 c 1 ⋯ p k c k n=p_1^{c_1}\cdots p_k^{c_k} n=p1c1⋯pkck
μ ( n ) = { 0 , ∃ i ∈ [ 1 , k ] , c i > 1 1 , m ≡ 0 ( m o d 2 ) , ∀ i ∈ [ 1 , k ] , c i = 1 − 1 , m ≡ 1 ( m o d 2 ) , ∀ i ∈ [ 1 , k ] , c i = 1 \mu(n)=\begin{cases} 0,&\exists i \in[1,k],c_i >1 \\ 1,&m \equiv 0\pmod2,\forall i \in[1,k],c_i=1\\ -1,&m\equiv1\pmod2,\forall i\in [1,k],c_i=1 \end{cases} μ(n)=⎩⎪⎨⎪⎧0,1,−1,∃i∈[1,k],ci>1m≡0(mod2),∀i∈[1,k],ci=1m≡1(mod2),∀i∈[1,k],ci=1
2. 欧拉函数: φ ( x ) \varphi(x) φ(x)
φ ( n ) = ∑ i = 1 n [ gcd ( i , n ) = 1 ] \varphi(n) = \sum \limits_{i=1} ^{n}[\gcd(i,n) = 1] φ(n)=i=1∑n[gcd(i,n)=1]
3. 单位函数: ε ( x ) \varepsilon(x) ε(x)
ε ( n ) = [ n = 1 ] \varepsilon(n) = [n = 1] ε(n)=[n=1]
4. 恒等函数: I d ( x ) Id(x) Id(x)
I d ( n ) = n Id(n) = n Id(n)=n
5. 常数函数: I ( x ) I(x) I(x)
I ( n ) = 1 I(n)=1 I(n)=1
6. 约数个数函数: d ( x ) d(x) d(x)
d ( n ) = ∑ i ∣ n 1 d(n)=\sum \limits_{i \mid n}1 d(n)=i∣n∑1
7. 约数和函数: σ ( x ) \sigma(x) σ(x)
σ ( n ) = ∑ d ∣ n d \sigma(n)=\sum \limits_{d \mid n} d σ(n)=d∣n∑d
常见卷积:
1. ε = μ ∗ 1 \varepsilon = \mu * 1 ε=μ∗1
ε = [ n = 1 ] = ∑ d ∣ n μ ( d ) \varepsilon = [n=1]=\sum \limits _{d \mid n} \mu (d) ε=[n=1]=d∣n∑μ(d)
2. d = 1 ∗ 1 d = 1 * 1 d=1∗1
d ( n ) = ∑ i ∣ n 1 d(n)=\sum \limits_{i \mid n}1 d(n)=i∣n∑1
3. I d ∗ 1 = σ Id * 1 = \sigma Id∗1=σ
σ ( n ) = ∑ d ∣ n d \sigma(n)=\sum \limits_{d \mid n} d σ(n)=d∣n∑d
4. μ ∗ I d = φ \mu * Id = \varphi μ∗Id=φ
φ ( n ) = ∑ d ∣ n d ⋅ μ ( n d ) \varphi(n)=\sum \limits _{d \mid n} d \cdot \mu(\dfrac{n}{d}) φ(n)=d∣n∑d⋅μ(dn)
5. φ ∗ 1 = I d \varphi * 1 = Id φ∗1=Id
I d ( n ) = ∑ d ∣ n φ ( d ) Id(n)=\sum \limits _{d \mid n} \varphi(d) Id(n)=d∣n∑φ(d)
狄利克雷卷积证莫比乌斯反演:
已知 f = g ∗ 1 f = g * 1 f=g∗1 其中 1 1 1 的逆元为 μ \mu μ,所以有 f ∗ μ = g f * \mu = g f∗μ=g
代码:
void Dirichlet() {
for(int i = 1; i <= n; i ++) {
for(int j = i; j <= n; j += i) {
h[j] += f[i] * g[j / i];
}
}
}