数论函数及定理
数论函数及定理
数论函数
又称算数函数。
指输入一个正整数 \(n\),输出一个数(我们只讨论整数)的函数 \(f(n)\)。
例如:
狄利克雷卷积
对于数论函数 \(f(x),g(x)\),定义:
一些性质:
- 交换律:\(f * g = g* f\)
 - 结合律:\((f*g)*h = f*(g*h)\)
 - 分配律:\(f*(g+h) = f*g + f*h\)
 - 单位元:\(f * \epsilon = f\)
 - 恒等卷积:\(1*1 = d\)(\(d(x)\) 是约数个数函数)
 
积性函数
附 OI Wiki 链接。
定义
对于函数 \(f(x)\),满足 \(f(1)=1\) 且 \(\forall \gcd(a,b)=1, f(ab)=f(a)f(b)\)。则 \(f(x)\) 是积性函数。
如果对所有 \(a,b\) 都成立,\(f(x)\) 就是完全积性函数。
例子
完全积性函数:\(\epsilon,1,id,id^k\)。
非完全积性函数:\(\varphi,\mu,d\)。
性质
- 
若 \(f,g\) 为积性函数,则 \(f*g\) 为积性函数。
懒得证。
 
欧拉函数
定义
欧拉函数 \(\varphi(x)\) 等于 \(\le x\) 且与 \(x\) 互质的数的个数。比如 \(\varphi(1)=1,\varphi(6)=2\)。
性质和公式
- \(\varphi(x)\) 是积性函数。
 
- 推论
 
将 \(n\) 质因数分解,得到 \(n = \sum_{i=1}^s p_i^{c_i},c_i>0\)。
积性函数的性质。
- 欧拉反演。
 
等价于:
证明:每个 \(\varphi(x) 都会筛掉 \gcd(y,n) = x\) 的 \(y\)。
- 引理。
 
\(p\) 是质数。
由定义可证。
- 计算用公式。
 
显然 \(c_i\) 不影响 \(\varphi(n)\)。
线性筛求欧拉函数
线性筛的时候我们会求出每个数的最小质因数 \(pri_n\)。
设 \(n' = \frac{n}{pri_n}\)。
- 
\(pri_n \mid n'\)。
则 \(n\) 和 \(n'\) 的质因子种类相同,只是 \(n\) 多一个 \(pri_n\) 罢了。
根据欧拉函数的计算用公式,得到 \(\varphi(n) = pri_n \varphi(n')\)。
 - 
\(pri_n \nmid n'\)。
此时 \(n\) 比 \(n'\) 多一种质因子 \(pri_n\),数量是多一个,那么有 \(\varphi(n) = (pri_n - 1) \varphi(n')\)。
 
莫比乌斯函数
定义
莫比乌斯函数 \(\mu(n)\) 定义为:
性质
- 
\(\mu(n)\) 是积性函数。
 - 
最常用性质。
 
证明
将 \(n\) 质因数分解:\(n = \sum_{i=1}^s p_i^{c_i}\)。
\(\sum_{d \mid n} \mu(d) = \sum_{k=0}^s \binom{s}{k} (-1)^k = (1+(-1))^s = [s=0]\)。
- 神奇的性质。
 
引理:\(\varphi = \mu * id\)。
线性筛求莫比乌斯函数
void init_mu() {
	mu[1]=1;
	rep(i,2,Max) {
		if(!vi[i]) mu[i]=-1, p[++p0]=i;
		for(int j=1;j<=p0 && i*p[j]<=n;j++) {
			vi[i*p[j]]=1;
			if(i%p[j]==0) break;
			mu[i*p[j]]=-mu[i];
		}
	}
}
莫比乌斯反演
约数版本:
如果有函数 \(F(n)\) 和 \(f(n)\) 满足:
那么有:
倍数版本:
如果有函数 \(F(n)\) 和 \(f(n)\) 满足:
那么有:
约数版本证明:
我们知道 \(\mu * 1 = \epsilon\)。
经验
容斥一下,变成每次询问求 \(O(1)\) 个 \(f(k)=\sum_{i=1}^a \sum_{j=1}^b [\gcd(i,j)=k]\)。
我们知道求 \(F(k)\) 表示 \(i\le a,j\le b,k\mid \gcd(i,j)\) 是好求的,等于 \(\lfloor \frac{a}{k} \rfloor \lfloor \frac{b}{k} \rfloor\)。
然后又有 \(F(k) = \sum_{k \mid d} f(d)\),根据莫比乌斯反演公式,得到 \(f(n) = \sum_{k\mid d} \mu(\frac{d}{k}) F(d)\)。
然后整除分块一下,单次询问 \(O(\sqrt{n})\)。
块筛
简介
数论函数 \(f\) 的前缀和记为 \(S_f\)。
\(f\) 的块筛指的是 \(S_f\) 在所有 \(\lfloor \frac{n}{k} \rfloor\) 处的点值。
根据根号分治的知识,\(|\{\lfloor \frac{n}{k} \rfloor \} | \le 2 \sqrt{n}\) 。
块筛卷积
给定 \(A,B\) 的块筛,求 \(C = A * B\) 的块筛。
证明很简单。
然后我们进行整除分块,按照 \(\lfloor \frac{n}{i} \rfloor\) 分块。于是只需要 \(A,B\) 的块筛的信息就可以求出 \(C\) 的块筛的信息。
于是块筛卷积是封闭的。
枚举 \(n\),然后根号分治。时间复杂度没有那么直观,是 \(O(\sum_{k=1}^{\sqrt{N}} k^{\frac{1}{2}} + (\frac{N}{k}^{\frac{1}{2}} ))\)。近似成无限积分,得到是 \(O(N^{\frac{3}{4}})\)。
具体地,我们先枚举 \(\le n\) 的总共 \(\sqrt{n}\) 的要求的块筛下标。若 \(k \le \sqrt{n}\),就根号分治 \(A\),否则根号分治 \(B\)。
如果我们对下标 \(\le n^{\frac{2}{3}}\) 的块筛,我们使用线性筛直接线性求出。对于 \(\ge\) 的部分呢,我们使用块筛卷积 \(O(\sum_{k=1}^{n^{\frac{1}{3}}}(\frac{n}{k})^{\frac{1}{2}})\),大概也是 \(O(n^{\frac{2}{3}})\)。因此总复杂度可以优化到 \(O(n^{\frac{2}{3}})\)。
杜教筛
对于一个数论函数 \(f(x)\),使用 \(O(n^{\frac{2}{3}})\) 的时间复杂度求 \(\sum_{i=1}^n f(i)\),即 \(S_f(n)\)。
我们知道 \(S_{f*g}(n) = \sum_{i=1}^n g(i)S_f(\lfloor \frac{n}{i}\rfloor)\)。移一下项:
计算:
\(1 \leq n \lt 2^{31}\)。
代入公式,得到:
本文来自博客园,作者:wing_heart,转载请注明原文链接:https://www.cnblogs.com/wingheart/p/18673826

                
            
        
浙公网安备 33010602011771号