文章目录
积性函数&数论分块&迪利克雷卷积&杜教筛&莫比乌斯函数及其反演
1. 算法分析
1.1 积性函数
1.1.1 定义
-
若数论函数 f f f是积性函数,那么对于$ \forall gcd(a,b)=1,f(ab)=f(a)f(b)$
-
若数论函数f是完全积性函数,那么对于 ∀ a , b ∈ N , f ( a b ) = f ( a ) f ( b ) \forall a,b \in N,f(ab)=f(a)f(b) ∀a,b∈N,f(ab)=f(a)f(b)
1.1.2 常见积性函数
-
莫比乌斯函数 μ ( n ) \mu(n) μ(n)
$\mu(n)= \begin{cases} 1&n=1\ 0&n\text{ 含有平方因子}\ (-1)^k&k\text{ 为 }n\text{ 的本质不同质因子个数}\ \end{cases} $
性质:
性质1:若p是质数, μ ( p ) = − 1 \mu(p) = -1 μ(p)=−1
性质2:若p是质数, i ∈ N \in N ∈N且 p ∤ i , μ ( p i ) = − μ ( i ) p \nmid i, \mu(p_i) = -\mu(i) p∤i,μ(pi)=−μ(i)
性质3: ∑ d ∣ n μ ( d ) = ε ( n ) \sum_{d|n} \mu(d) = \varepsilon(n) ∑d∣nμ(d)=ε(n)
性质4: [ g c d ( i , j ) = 1 ] ⟺ ∑ d ∣ g c d ( i , j ) μ ( d ) [gcd(i, j) = 1] \iff \sum_{d|gcd(i, j)} \mu(d) [gcd(i,j)=1]⟺∑d∣gcd(i,j)μ(d) -
欧拉函数
φ ( n ) = ∑ i = 1 n [ g c d ( i , n ) = 1 ] \varphi(n) = \sum_{i=1}^{n}[gcd(i, n) = 1] φ(n)=∑i=1n[gcd(i,n)=1]表示1~n中与n互质的数的个数
性质:
性质1:若p是质数, φ ( p ) = p − 1 \varphi(p) = p - 1 φ(p)=p−1
性质2: ∀ n > 1 , [ 1 , n ] \forall n>1, [1, n] ∀n>1,[1,n]中与n互质的数的和为 n ∗ φ ( n ) / 2 n * \varphi(n) / 2 n∗φ(n)/2
性质3:若p是质数,当 p ∣ i p \mid i p∣i时, φ ( p ∗ i ) = φ ( i ) ∗ p \varphi(p*i) = \varphi(i) * p φ(p∗i)=φ(i)∗p; 当 p ∤ i p \nmid i p∤i时, φ ( p ∗ i ) = φ ( i ) ∗ ( p − 1 ) \varphi(p * i) = \varphi(i) * (p-1) φ(p∗i)=φ(i)∗(p−1)
zhi -
约数个数函数 d ( n ) d(n) d(n)
若n的质因数分解式子为 ∏ i = 1 k p i a i \prod_{i=1}^{k}p_i^{a_i} ∏i=1kpiai,则 d ( n ) = ∏ i = 1 k ( a i + 1 ) d(n) = \prod_{i=1}^{k}(a_i+1) d(n)=∏i=1k(ai+1) -
约数和函数 δ ( n ) \delta(n) δ(n)
若n的质因数分解式子为 ∏ i = 1 k p i a i \prod_{i=1}^{k}p_i^{a_i} ∏i=1kpiai,则 δ ( n ) = ∏ i = 1 k ∑ j = 0 a i p i j \delta(n) = \prod_{i=1}^{k}\sum_{j=0}^{a_i}p_i^j δ(n)=∏i=1k∑j=0aipij
1.1.3 常见完全积性函数
- 常函数 I ( n ) = 1 I(n) = 1 I(n)=1
- 恒等函数 i d ( n ) = n id(n) = n id(n)=n
- 单位函数 ε ( n ) = [ n = 1 ] \varepsilon(n) = [n=1] ε(n)=[n=1]
1.2 迪利克雷卷积
如果 F , f , g F,f,g F,f,g满足:
F ( n ) = ∑ d ∣ n f ( d ) g ( n / d ) F(n) = \sum_{d|n}f(d)g(n/d) F(n)=∑d∣nf(d)g(n/d)
则F是f和g的迪利克雷卷积,记作 F = ( f ∗ g ) F=(f * g) F=(f∗g),或 F ( n ) = ( f ∗ g ) ( n ) F(n)=(f * g)(n) F(n)=(f∗g)(n)。
性质
迪利克雷卷积满足以下性质:
- 交换律 ( 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 ∗ g + f ∗ h f * (g + h) = f * g + f * h f∗(g+h)=f∗g+f∗h
- f ∗ ε = f f * \varepsilon = f f∗ε=f
结论:
性质1: f ∗ ε = f f * \varepsilon = f f∗ε=f
性质2: μ ∗ I = ε \mu * I = \varepsilon μ∗I=ε
性质3: φ ∗ I = i d \varphi * I = id φ∗I=id
性质4: μ ∗ i d = φ \mu * id = \varphi μ∗id=φ
性质5: d = I ∗ I d = I * I d=I∗I
性质6: δ = I ∗ i d \delta = I * id δ=I∗id
其中,标黑的公式在莫比乌斯反演的推导里会被用到
1.3 数论分块
数论分块就是要找一个含有 ⌊ n i ⌋ \lfloor \frac{n}{i} \rfloor ⌊in⌋的求和式子
对于任意一个i(i<=n),找到一个最大的j,使得 ⌊ n i ⌋ = ⌊ n j ⌋ \lfloor \frac{n}{i} \rfloor = \lfloor \frac{n}{j} \rfloor ⌊in⌋=⌊jn⌋, 此时j = j = ⌊ n ⌊ n i ⌋ ⌋ j=\left\lfloor\frac{n}{\left\lfloor\frac{n}{i}\right\rfloor}\right\rfloor j=⌊⌊in⌋n⌋,因此每次可以把[i, j]分为一块,分块求和即可。
可以证明[1, n]分块的个数小于等于 2 ∗ n 2*\sqrt n 2∗n
一维分块形式: ∑ i = 1 n ⌊ n i ⌋ \sum_{i=1}^{n} \lfloor \frac{n}{i} \rfloor ∑i=1n⌊in⌋
二维分块形式: ∑ i = 1 m i n ( n , m ) ⌊ n i ⌋ ⌊ m i ⌋ \sum_{i=1}^{min(n, m)} \lfloor \frac{n}{i} \rfloor \lfloor \frac{m}{i} \rfloor ∑i=1min(n,m)⌊in⌋⌊im⌋
1.4 杜教筛
目的: 杜教筛被用来处理数论函数的前缀和问题。对于求解一个前缀和,杜教筛可以在低于线性时间的复杂度内求解
方法:
对于数论函数 f f f,要求计算 S ( n ) = ∑ i = 1 n f ( i ) S(n) = \sum_{i=1}^{n} f(i) S(n)=∑i=1nf(i),如果能够构造出 S ( n ) S(n) S(n)关于 S ( ⌊ n i ⌋ ) S\left(\left\lfloor\frac{n}{i}\right\rfloor\right) S(⌊in⌋)的表达式,那么就可以递归求解出