前言
积性函数是OI中的数论题的重要组成部分 (一般都是涉及到各种因数啊,倍数啊,gcd啊
前置知识
整除分块(引理)
有下面这样一个式子:
∑ i = 1 n ⌊ n i ⌋ \sum_{i=1}^n \left \lfloor {n \over i}\right \rfloor i=1∑n⌊in⌋
求这样一个东西需要多久? O ( n ) O(n) O(n)?
仔细观察,我们会发现 ⌊ n i ⌋ \left \lfloor {n \over i}\right \rfloor ⌊in⌋ 会有相同的取值。
比如: 18 7 = 18 8 = 18 9 = 2 {18\over 7}={18\over 8}={18\over 9}=2 718=818=918=2
有这样一个结论 ⌊ n i ⌋ \left \lfloor {n \over i}\right \rfloor ⌊in⌋ 最多有 2 n 2\sqrt n 2n 种取值
所以可以 O ( n ) O(\sqrt n) O(n) 算出答案。
莫比乌斯函数
定义
莫比乌斯函数,像这样 μ ( n ) \mu(n) μ(n)
{ μ ( n ) = 0 ( n 为 一 个 质 数 平 方 的 倍 数 ) μ ( n ) = ( − 1 ) k ( n 的 质 因 数 的 个 数 为 k ) \left\{ \begin{array}{lr} \mu(n)=0 &(n为一个质数平方的倍数)\\ \mu(n)=(-1)^k &(n的质因数的个数为 k)\\ \end{array} \right. {
μ(n)=0μ(n)=(−1)k(n为一个质数平方的倍数)(n的质因数的个数为k)
例如
μ ( 1 ) = 1 = ( − 1 ) 0 μ ( 30 ) = − 1 = ( − 1 ) 3 ( 30 = 2 × 3 × 5 ) μ ( 6 ) = 1 = ( − 1 ) 2 ( 6 = 2 × 3 ) μ ( 12 ) = 0 ( 12 = 2 2 × 3 ) \left. \begin{array}{lr} \mu(1)=1=(-1)^0\\ \mu(30)=-1=(-1)^3 &(30=2\times 3\times 5)\\ \mu(6)=1=(-1)^2 &(6=2\times 3)\\ \mu(12)=0 &(12=2^2\times 3) \end{array} \right. μ(1)=1=(−1)0μ(30)=−1=(−1)3μ(6)=1=(−1)2μ(12)=0(30=2×3×5)(6=2×3)(12=22×3)
一个性质
∑ d ∣ n μ ( d ) = [ n = 1 ] \sum_{d|n}\mu(d)=[n=1] d∣n∑μ(d)=[n=1]
也就是当n=1是它的值才为1,其他情况都为0 (根据定义应该不难推出吧(逃
欧拉函数
定义
欧拉函数,就像是这样 φ ( n ) \varphi(n) φ(n)
意思是说在 1 到 n,与 n 互质的数有多少个。
比如 φ ( 1 ) = 1 \varphi(1)=1 φ(1)=1, φ ( 7 ) = 6 \varphi(7)=6 φ(7)=6, φ ( 12 ) = 4 \varphi(12)=4 φ(12)=4
表达式
φ ( n ) = n ∏ i = 1 k ( 1 − 1 p i ) \varphi(n)=n\prod_{i=1}^k(1-\frac{1}{p_i}) φ(n)=ni=1∏k(1−pi1)
p i p_i pi为 p p p的第 i i i个质因数,k为质因数个数
其实很简单,就是个容斥
n个数,减去p1的倍数,p2的倍数……再加回p1p2的倍数,减回p1p2p3的倍数……
一个性质
∑ d ∣ n φ ( d ) = n \sum_{d|n}\varphi(d)=n d∣n∑φ(d)=