首页 > 其他分享 >反演与筛法

反演与筛法

时间:2022-11-29 20:46:12浏览次数:37  
标签:frac 函数 筛法 积性 sum sqrt 反演 数论

本文大量参考了:

  • 《反演与筛法》马耀华

  • OI中(?)常用数论函数求和法的大致描述、zzt求和法的简化版,negiizhao

1 积性函数与反演

我们先给出一些关于数论函数的基本定义。

  • 定义 1.1(数论函数):以正整数集 \(\mathbb N^+\) 为定义域的函数。

  • 定义 1.2(积性函数):称数论函数 \(f\) 为积性函数,当且仅当对于任意正整数 \(p,q\) 满足 \(p\perp q\) 都有 \(f(pq)=f(p)f(q)\)。称数论函数 \(f\) 为完全积性函数,当且仅当对于任意正整数 \(p,q\) 都有 \(f(pq)=f(p)f(q)\)。

    完全积性函数一定是积性函数。

若 \(f\) 为积性函数,则一定有 \(f(1)=0\) 或 \(f(1)=1\)。而注意到当 \(f(1)=0\) 时,对于任意 \(n\) 都有 \(f(n)=0\),我们将该数论函数记作 \(0\)。

我们在接下来的讨论中将不讨论这种平凡情况,而默认积性函数都满足 \(f(1)=1\)。

  • 例 1.3:接下来给出一些常见的积性函数:

    1. \(\epsilon(n):=[n=1]\)。
    2. \(1(n):=1\)。
    3. \(\operatorname{id}(n):=n\)。
    4. \(\operatorname{id^k}(n):=n^k\)。
    5. \(\sigma_k(n)=\sum_{d|n}d^k\)。
    6. \(\mu(n)\):莫比乌斯函数。
    7. \(\varphi(n)\):欧拉函数。

    (其中前四者还是完全积性函数)

数论函数最基本的运算有点乘、数乘和加减法等,它们满足常见的代数算律,且积性(完全积性)关于点乘是封闭的,这里简单带过。

除此之外,我们再介绍一种数论函数上的重要运算:

  • 定义 1.4(狄利克雷卷积):定义两个数论函数 \(f,g\) 的狄利克雷卷积为数论函数 \(h\)(记为 \(f*g\)),满足对于任意的 \(n\) 都有 \(h(n)=\sum_{d|n}f(d)g(\frac{n}{d})\)。

  • 引理 1.5(狄利克雷卷积的代数算律):设 \(f,g,h\) 为数论函数。

    1. \(f*g=g*f\)。
    2. \((f*g)*h=f*(g*h)\)。
    3. \(f*\epsilon=f\)。

    证明:略。

  • 引理 1.6(积性关于狄利克雷卷积是封闭的):若 \(f,g\) 为积性函数,则 \(h=f*g\) 也为积性函数。

    证明:若 \(f,g\) 为积性函数,则对于任意正整数 \(p,q\) 满足 \(p\perp q\),都有:

    \[\begin{aligned} h(p)h(q)&=\left(\sum_{i|p}f(i)g(\tfrac pi)\right)\left(\sum_{j|q}f(j)g(\tfrac qj)\right)\\ &=\sum_{i|p}\sum_{j|q}f(i)f(j)g(\tfrac pi)g(\tfrac qj)\\ &=\sum_{i|p}\sum_{j|q}f(ij)g(\tfrac{pq}{ij})\\ &=\sum_{T|pq}f(T)g(\tfrac{pq}{T})=h(pq) \end{aligned} \]

    其中第二行到第三行是因为 \(p\perp q,i|p,j|q\implies i\perp j\);第三行到第四行是因为当 \(p\perp q\) 时,任意 \(pq\) 的因数 \(T\) 和任意 \(p,q\) 的因数对 \((i,j)\) 间能构成一一对应,且满足 \(T=ij\)。

值得注意的是,引理 1.6 对于完全积性函数并没有类似的论断,在后面所讲的贝尔级数中可以看到更本质的原因。

类似形式幂级数的逆,在狄利克雷卷积的意义下,我们也能构造数论函数的逆。

  • 定义 1.7(数论函数的逆):定义数论函数 \(f\neq 0\) 的逆为数论函数 \(f^{-1}\) 满足 \(f*f^{-1}=\epsilon\)。

  • 引理 1.8:非零数论函数的逆存在且唯一。

    证明:唯一性:若数论函数 \(f\) 存在两个逆 \(g_1,g_2\),那么 \(g_1=g_1*\epsilon=g_1*(f*g_2)=(g_1*f)*g_2=\epsilon*g_2=g_2\)。

    存在性:利用 \(f^{-1}(1)=1\) 和 \(\sum_{d|n}f(d)f^{-1}(\frac nd)=0(n>1)\),来归纳构造 \(f^{-1}\) 并证明对于任意 \(n>1\) 都有 \((f*f^{-1})(n)=0\)。

  • 引理 1.9(积性关于求逆是封闭的):若 \(f\) 为积性函数,则 \(f^{-1}\) 也是积性函数。

    证明:类似引理 1.6 的证明,但更加繁琐(需要分类讨论),略去。

有了逆,我们就能定义数论函数的除法。

  • 定义 1.10(数论函数的除法):定义两个数论函数 \(f\) 和 \(g\neq 0\) 的除法操作为 \(f/g:=f*g^{-1}\)。

刻画狄利克雷卷积的一种工具是狄利克雷生成函数。

  • 定义 1.11(狄利克雷生成函数):定义数论函数 \(f\) 的狄利克雷生成函数为 \(F(x):=\sum\limits_{n\geq 1}\frac{f(n)}{n^x}\)。

坑:为什么使用 \(n^{-x}\) 作为形式记号而非 \(n^x\)?

那么两个数论函数的狄利克雷卷积对应它们狄利克雷生成函数的乘法。

  • 定义 1.12(黎曼 \(\zeta\) 函数):根据定义 1.11,可知数论函数 \(1(n):=1\) 的狄利克雷生成函数为 \(\zeta(x)=\sum_{n=1}^{\infty}\frac{1}{n^x}\),称为黎曼 \(\zeta\) 函数。

可以看出,狄利克雷生成函数通常在计算上不太方便。对于积性函数来说,我们只关心它在所有质数幂上的取值,就能确定它了。

  • 定理 1.13:设 \(f\) 是积性函数,则有:

    \[\sum_{n=1}^{\infty}\frac{f(n)}{n^x}=\prod_{p\in\mathbb P}(1+f(p)p^{-x}+f(p^2)p^{-2x}+\cdots) \]

    证明:略。

  • 例 1.14(快速狄利克雷卷积):为求两个数论函数的狄利克雷卷积前 \(n\) 项,直接暴力做是 \(O(n\log n)\) 的。

    但是如果其中一个数论函数还是积性函数,我们就能加速:

    根据定理 1.13,让一个数论函数 \(f\) 卷另一个积性函数 \(g\),可以拆成让 \(f\) 卷很多次,第 \(i\) 次卷上一个只有在第 \(i\) 个质数的幂上有值的数论函数。

    对质数 \(p\) 卷的时间为 \(\sum_{k\geq 1}\frac{n}{p^k}\),由于 \(p\geq 2\),所以它与 \(\frac{n}{p}\) 同级。那么总时间为 \(O(\sum_{p\in\mathbb P}\frac{n}{p})=O(n\log\log n)\)。

  • 例 1.15:由定理 1.13 可知,黎曼 \(\zeta\) 函数也可以表示为:

    \[\zeta(x)=\prod_{p\in\mathbb P}(1+p^{-x}+p^{-2x}+\cdots)=\frac{1}{\prod_{p\in\mathbb P}(1-p^{-x})} \]

    另一方面,考虑莫比乌斯函数 \(\mu\) 的狄利克雷生成函数为:

    \[\prod_{p\in\mathbb P}(1-p^{-x}) \]

    从而我们可以看出,\(\mu\) 的狄利克雷生成函数恰为 \(\frac{1}{\zeta(x)}\)。

从例 1.15 可以引出莫比乌斯反演:

  • 定理 1.16:(莫比乌斯反演):设 \(f,g\) 为数论函数。

    \[g(n)=\sum_{d|n}f(d)\iff f(n)=\sum_{d|n}\mu(\tfrac{n}{d})g(d) \]

    证明:设 \(f,g\) 的狄利克雷生成函数分别为 \(F(x),G(x)\),那么原式就等价于:

    \[G(x)=F(x)\zeta(x)\iff F(x)=\frac{1}{\zeta(x)}G(x) \]

    另一个很直观的理解是:这对应着高维前缀和及高维差分。

当我们在研究积性函数时,我们一般不用研究其整个狄利克雷生成函数,而是像定理 1.13 一样,只关注某一质数幂处的函数项,此时我们把形式记号改写成关于质数幂次的,将会变成我们熟知的形式幂级数。

  • 定义 1.17(贝尔级数):定义积性函数 \(f\) 在质数 \(p\) 上的贝尔级数为 \(f_p(x)=\sum_{n\geq0 }f(p^n)x^n\)。

于是两个积性函数的狄利克雷卷积对应它们在每个质数上的贝尔级数上的乘法。

  • 例 1.18:我们举出一些常用积性函数的贝尔级数:
  1. \(\epsilon_p(x)=1\)。
    1. \(1_p(x)=\frac{1}{1-x}\)。
    2. \(\operatorname{id}_p(x)=\frac{1}{1-px}\)。
    3. \(\operatorname{id^k}_p(x)=\frac{1}{1-p^kx}\)。
    4. \(\mu_p(x)=1-x\)。
    5. \(\varphi_p(x)=\frac{1-x}{1-px}\)。
  • 例 1.19:从贝尔级数,容易看出两个等式:

\[ \begin{aligned} \mu*1&=\epsilon\\ \varphi*1&=\operatorname{id} \end{aligned} \]

翻译成我们常见的形式即为:

\[ \begin{aligned} \sum_{d|n}\mu(d)&=[n=1]\\ \sum_{d|n}\varphi(d)&=n \end{aligned} \]

  • 例 1.20:说明:为何两个完全积性函数的狄利克雷卷积不一定是完全积性函数。

    考虑某完全积性函数 \(f\) 在某质数 \(p\) 上的贝尔级数,发现形如:

    \[f_p(x)=\sum_{n\geq 0}f(p^n)x^n=\sum_{n\geq 0}f(p)^nx^n=\frac{1}{1-f(p)x} \]

    而 \(f_p(x)^2\) 显然不是 \(\frac{1}{1-ax}\) 的形式,于是 \(f^2\) 不一定是完全积性函数。

  • 例 1.21:从贝尔级数的角度说明:两个积性函数的狄利克雷卷积一定是积性函数,一个积性函数的逆也一定是积性函数。

    唯一性反证,存在性直接默认目标函数是积性函数,对贝尔级数做相应的多项式乘法/多项式求逆构造出目标函数后再证明。

  • 例 1.22(任意积性函数前缀和):当 \(n\) 不太大的时候,我们可以按如下算法得到积性函数前 \(n\) 项:我们在所有质数幂处暴力按定义计算,然后用线性筛法得到积性函数前 \(n\) 项的值。

    考虑分析这个做法的复杂度,关键在于暴力计算质数幂处积性函数值的复杂度。注意到 \(n\) 以内的质数个数是 \(O(\frac{n}{\log n})\),而 \(n\) 以内的严格质数幂(幂次 \(>1\))的数量只有 \(O(\frac{\sqrt n}{\log n})\),那么对于大多数积性函数,只要它们在质数处的计算较快,即使它们在严格质数幂处的计算量很大(比如是个关于幂次的多项式复杂度),总复杂度仍然是 \(O(n)\) 的,瓶颈仍然在线性筛。

接下来的章节我们将介绍一些求数论函数前缀和的筛法,我们先做一些简单的铺垫。

  • 定义 1.23(整除集合):定义正整数 \(n\) 的整除集合为 \(D(n):=\left\{\lfloor\frac nm\rfloor :m\in \mathbb N^+\right\}=\left\{1,\cdots,\lfloor\sqrt n\rfloor,\left\lfloor\frac{n}{\lfloor\sqrt n\rfloor}\right\rfloor,\left\lfloor\frac{n}{\lfloor\sqrt n\rfloor-1}\right\rfloor,\cdots,n\right\}\)。

    定义 \(S_{n,f}\) 表示数论函数 \(f\) 在 \(D(n)\) 处的前缀和函数。

  • 引理 1.24:设 \(n\) 为正整数。对于任意 \(n'\in D(n)\),有 \(D(n')\subseteq D(n)\)。

    证明:\(\lfloor\frac{\lfloor\frac{n}{a}\rfloor}{b}\rfloor=\lfloor\frac{n}{ab}\rfloor\)。

2 Dirichlet 双曲线法 / 杜教筛

求 \(S_{n,h}\),其中 \(h=f*g\) 且已知 \(S_{n,f},S_{n,g}\)。

那么有:

\[\begin{aligned} \sum_{i=1}^nh(i)&=\sum_{i=1}^n\sum_{d|i}f(d)g(\tfrac{i}{d})\\ &=\sum_{i=1}^ng(i)\sum_{j=1}^{(n/i)}f(j)\\ \end{aligned} \]

另一种类似的方法是:

\[\begin{aligned} \sum_{i=1}^nh(i)&=\sum_{i=1}^n\sum_{ab=i}f(a)g(b)\\ &=\sum_{a\leq \sqrt n}\sum_{b\leq \frac na}f(a)g(b)+\sum_{b\leq \sqrt n}\sum_{a\leq \frac nb}f(a)g(b)-\sum_{a\leq \sqrt n}\sum_{b\leq \sqrt n}f(a)g(b) \end{aligned} \]

这种方法用几何可以理解为:要求 \(xy=n\)(即 \(y=\frac nx\))下方的所有点对 \((x,y)\) 的 \(f(a)g(b)\) 的和,那么对 \(x\leq \sqrt n\)、\(y\leq \sqrt n\) 的两部分分别求和,然后再减去二者的公共部分:

那么能 \(O(\sqrt n)\) 单点求 \(h\) 在 \(n\) 处的前缀和。

若用该方法计算 \(S_{n,h}\),得到时间为:

\[\sum_{i=1}^{\sqrt n}\sqrt i+\sum_{i=1}^{\sqrt n}\sqrt{\frac{n}{i}} \]

积分近似为 \(O(n^{3/4})\)。

进一步地,设置阈值 \(S\),考虑对 \(\leq S\) 的部分暴力 \(O(S\log S)\) 计算狄利克雷卷积。这样时间为:(假设 \(S>\sqrt n\))

\[S\log S+\sum_{i=1}^{n/S}\sqrt{\frac ni} \]

积分近似为 \(O(S\log S+\frac{n}{S^{1/2}})\),取 \(S=\left(\frac{n}{\log n}\right)^{2/3}\) 得到 \(O(n^{2/3}\log^{1/3}n)\)。

若 \(h\) 还是积性函数,即我们能在 \(O(S)\) 的时间内对 \(\leq S\) 的 \(h\) 进行预处理的话,此时总复杂度为:

\[S+\sum_{i=1}^{n/S}\sqrt{\frac{n}{i}} \]

积分近似为 \(O(S+\frac{n}{S^{1/2}})\),取 \(S=n^{2/3}\) 得到 \(O(n^{2/3})\)。

注意到,Dirichlet 双曲线法也可以类似地用 \(S_{n,h},S_{n,g}\) 反推 \(S_{n,f}\),此时它叫杜教筛。

为了 \(S_{n,h},S_{n,g}\) 的方便计算,在杜教筛过程中构造 \(g,h\) 时可以先假设它们为完全积性函数试试,此时必有 \(f_p(x)=\frac{1-ax}{1-bx}\) 的形式。

3 Powerful Numbers

求 \(\sum_{i=1}^nf(i)\)。其中已知一数论函数 \(g\) 及 \(S_{n,g}\),满足对于任意 \(p\in\mathbb P\) 都有 \(f(p)=g(p)\)。

记 \(h=f/g\),这里要求 \(h\) 是积性函数(所以一般来说直接要求 \(f,g\) 为积性函数即可)。那么有:

\[\begin{aligned} \sum_{i=1}^nf(i)&=\sum_{i=1}^n\sum_{d|i}g(d)h(\tfrac id)\\ &=\sum_{i=1}^nh(i)\sum_{j=1}^{(n/i)}g(j) \end{aligned} \]

注意到,当 \(f(p)=g(p)\) 时,由于 \(f(p)=\sum_{d|p}g(d)h(\frac pd)=g(p)+h(p)\),所以得 \(h(p)=0\)。而 \(h\) 是积性函数,从而 \(h(n)\) 非零当且仅当 \(n\) 的每个质因子的幂次都 \(>1\)。我们考虑暴力枚举这样的 \(n\)(powerful numbers)并统计贡献。

注意到这样的 \(n\) 只包含 \(\leq \sqrt n\) 的质因子,所以我们考虑对每个 \(\leq \sqrt n\) 的质数 \(p\) 算出 \(h\) 在 \(p\) 的幂上的取值,可以直接暴力 \(O((\log_pn)^2)\) 按照定义做狄利克雷求逆(注意这里还需要快速知道 \(f(p^k)\) 和 \(g(p^k)\) 的单点值)。根据例 1.22 的类似讨论,这部分的时间复杂度仍然是 \(O(\frac{\sqrt n}{\log n})\) 的。

知道了 \(h\) 在质数幂处的取值后(贝尔级数),我们可以暴力 dfs 所有 powerful 的 \(n\) 并统计贡献,关键在于 powerful 的 \(n\) 的数量。

由于每个质因子幂次都 \(>1\) 的 \(n\) 都可以被表示成 \(a^2b^3\) 的形式(虽然可能有多种表示方式),那么总的 \(n\) 的个数不超过:

\[\sum_{i=1}^{\sqrt n}\sqrt[3]{\frac{n}{i^2}} \]

积分近似得到 \(O(\sqrt n)\)。

标签:frac,函数,筛法,积性,sum,sqrt,反演,数论
From: https://www.cnblogs.com/ez-lcw/p/16936606.html

相关文章

  • 素数筛法-欧拉筛-个人理解
    素数筛法-欧拉筛-个人理解素数筛选有两种流派,一种是埃氏筛法,一种是欧拉筛,由于埃氏筛法很简单,而且效率没有欧筛效率高。因此本文介绍欧拉筛。本文用另一种角度讲解为何在i......
  • 每日一题1--埃氏筛法学习
    我们今天要介绍的埃拉托斯特尼算法就是他发明的用来筛选素数的方法,为了方便我们一般简称为埃式筛法或者筛法。埃式筛法的思路非常简单,就是用已经筛选出来的素数去过滤所有......
  • 筛法瞎写
    看见APJifengc在写min25筛发现我这个东西都不会了。赶紧复习了一把去写点题。写一个更一个。loj6682梦中的数论答案显然\(\frac12\sum_{i=1}^n\binom{d(i)}{2}=\frac......
  • 素数筛法及其优化策略
    暴力算法寻找素数的效率是底下的,可以通过素数筛法来在一个自然数表中标记处素数。Eratosthenes筛法首先是Eratosthenes筛法,基本方法就是首先排除所有大于2的偶数,然后从3......
  • Möbius 反演
    \(\textbf{QAQ}\)令\(h\)为两个数论函数\(f,g\)的Dirichlet卷积\(f*g\),则\[h(n)=\sum_{d|n}f(d)g(\frac{n}{d})\]它满足结合律,交换律,分配律。Dirichlet卷积单......
  • 数组~筛法求素数
    题目描述用筛法求之N内的素数。 用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列,1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后......
  • 容斥原理 & 莫比乌斯反演
    tobefix:“扩展”部分的式子是假的二维子集反演莫比乌斯反演容斥原理&莫比乌斯反演一、函数卷积:定义函数卷积\(f(x,y)\)和\(g(x,y)\)是\(X\timesX\ri......
  • 牛客竞赛数学专题—整数分解与筛法
    题目链接A.青蛙的约会B.SumofConsecutivePrimeNumbersC.PrimeDistanceD. PrimeLandE. X-factorChainsA.青蛙的约会statement:两只......
  • 积性函数(积性函数概念、欧拉筛求积性函数、莫比乌斯反演)学习笔记
    1、积性函数2、欧拉筛求积性函数3、莫比乌斯反演4、狄拉克雷卷积......
  • 炫酷反演魔术?
    记录一些自己做的简单题。P6478简单容斥。设\(f[x][i]\)表示\(x\)为根子树,钦定\(i\)对祖孙关系的方案数。可以用树形背包转移。(顺便给我科普了真正正确的树形背包......