数论函数

恶补数学。。。

狄利克雷卷积

定义

定义运算 \((\text{f} * \text{g})(n)=\sum\limits_{d|n}\text{f}(d)\text{g}(\frac{n}{d})\),记为狄利克雷卷积。

注:在数论中,\(*\) 读作“卷”。

性质

  • \(\text{f} * \text{g}=\text{g} * \text{f}\)(交换律)

  • \(\text{f} * (\text{g} * \text{h})=(\text{f} * \text{g}) * \text{h}\)(结合律)

  • \((\text{f + g}) * \text{h}=\text{f} * \text{h}+\text{g} * \text{h}\)(分配律)

  • \(x\text{f}*\text{g}=x(\text{f} * \text{g})\)(优先级大)

  • 有单位元 \(\epsilon(n)=[n=1]\),即 \(\text{f}*\epsilon=\epsilon * \text{f}=\text{f}\)

  • 对于每一个 \(\text{f}(1)\ne 0\) 的函数 \(\text{f}\),存在逆元 \(\text{g}\) 使得 \(\text{f} * \text{g}=\epsilon\)

  • \(\text{g}\)\(\text{f}\) 的逆元,只需要让 \(\text{g}(n)\) 满足以下式子即可:

\[\text{g}(n)=\dfrac{1}{\text{f}(1)}\Bigg(\epsilon(n)-\sum\limits_{i|n,i\neq1}\text{f}(i)\text{g}\Big(\dfrac{n}{i}\Big)\Bigg) \]

另外一些有用的计算

点乘

定义 \(\text{(f · g)}(x)=\text{f}(x)\text{g}(x)\)

那么当 \(\text{f}\) 是完全积性函数时,有 \((\text{f · g})*(\text{f · h})=\text{f}·(\text{g}*\text{h})\)

一些常见的数论函数

  • \(1(x)=1\),常函数,不管自变量取值多少恒为一,具有完全积性。

  • \(\text{id}(x)=x,\text{id}^k(x)=x^k\),标号函数,返回自变量本身,具有完全积性。

  • \(\varphi(x)=\sum\limits_{i=1}^x[\gcd(i,x)=1]\),欧拉函数,表示小于某正整数且与该数互质的正整数的个数

  • \(\epsilon(x)=[x=1]\),约定中括号返回一个布尔量,中括号内表达式为真返回1,否则返回0。整数域下有积性。

  • \(\text{d}(x)=\sum\limits_{d|x}1\),表示 \(x\) 的约数个数。

  • \(\sigma(x)=\sum\limits_{d|x}d\),表示 \(x\) 的约数和。

\(\mu\) 函数

定义

定义 \(1\) 的逆为 \(\mu\)

性质

\[\mu(p^k)=\begin{cases}1&(k=0)\\-1&(k=1)\\0&(k>1)\end{cases} \]

一些常见数论函数间的关系

  • \(\text{d}=1*1\)

  • \(\sigma=1*\text{id}\)

  • \(\text{id}=1*\varphi\)

  • \(\sigma=1*1*\varphi=\text{d}*\varphi\)

  • \(\varphi=\text{id}*\mu\)

  • \(1=\text{d}*\mu\)

  • \(\text{id}=\sigma * \mu\)

莫比乌斯反演

定理内容

\(\text{g}=\text{f}*1\),则 \(\text{f}=\text{g}*\mu\)

求:

\[\sum\limits_{i=1}^n\sum\limits_{j=1}^m\gcd(i,j) \]

可以对式子进行如下变化:

\(N=\min(n,m)\),则原式

\[=\sum\limits_{i=1}^N\sum\limits_{j=1}^N\gcd(i,j)\\ =\sum\limits_{d=1}^Nd\sum\limits_{i=1}^N\sum\limits_{j=1}^N[\gcd(i,j)=d]\\ =\sum\limits_{d=1}^Nd\sum\limits_{i=1}^{\big\lfloor\frac{N}{d}\big\rfloor}\sum\limits_{j=1}^{\big\lfloor\frac{N}{d}\big\rfloor}[\gcd(i,j)=1] \]

后面可以用莫比乌斯反演转化为 \(O(\sqrt{n})\),总复杂度 \(O(n\sqrt{n})\),进一步优化:

\[=\sum\limits_{d=1}^Nd\sum\limits_{i=1}^{\big\lfloor\frac{N}{d}\big\rfloor}\mu(i)\Big\lfloor\dfrac{n}{id}\Big\rfloor\Big\lfloor\dfrac{m}{id}\Big\rfloor\\ =\sum\limits_{d=1}^Nd\sum\limits_{id=1}^N\mu(i)\Big\lfloor\dfrac{n}{id}\Big\rfloor\Big\lfloor\dfrac{m}{id}\Big\rfloor\ \]

\(T=id\),对于每一个 \(T\),只有 \(i=\frac{T}{d},T \text{ mod }d=0\),则

\[=\sum\limits_{d=1}^Nd\sum\limits{T=1}^N[T \text{ mod }d=0]\mu\Big(\frac{T}{d}\Big)\Big\lfloor\dfrac{n}{T}\Big\rfloor\Big\lfloor\dfrac{m}{T}\Big\rfloor \]

因为 \(T\) 只和 \(d\) 有关,所以

\[=\sum\limits_{d=1}^Nd\sum\limits_{d|T}^N\mu\Big(\dfrac{T}{d}\Big)\Big\lfloor\dfrac{n}{T}\Big\rfloor\Big\lfloor\dfrac{m}{T}\Big\rfloor \]

\(d\) 乘进去

\[=\sum\limits_{d=1}^N\sum\limits_{d|T}^Nd\mu\Big(\dfrac{T}{d}\Big)\Big\lfloor\dfrac{n}{T}\Big\rfloor\Big\lfloor\dfrac{m}{T}\Big\rfloor \]

我们可以改变枚举变量,原式枚举的是 \(d\) 的倍数,已知在 \(1-N\) 中枚举一个数的倍数和 \(1-N\) 中枚举一个数的因子是等价的,所以我们可以把枚举 \(d\) 的倍数改为枚举 \(T\) 的因子,那么就有

\[=\sum\limits_{T=1}^N\sum\limits_{d|T}d\mu\Big(\dfrac{T}{d}\Big)\Big\lfloor\dfrac{n}{T}\Big\rfloor\Big\lfloor\dfrac{m}{T}\Big\rfloor \]

显然,式中有一个经典的卷积形式

\[\sum\limits_{d|T}d\mu\Big(\dfrac{T}{d}\Big)=\text{id}*\mu \]

\(h=\text{id}*\mu\),则

\[h*1=\text{id}*\mu*1\\ h*1=\text{id}*\epsilon\\ h*1=\text{id} \]

又因为 \(\varphi*1=\text{id}\),所以 \(h=\varphi\),则原式为

\[=\sum\limits_{T=1}^N\varphi(T)\Big\lfloor\dfrac{n}{T}\Big\rfloor\Big\lfloor\dfrac{m}{T}\Big\rfloor \]

欧拉函数前缀和可以用杜教筛求得,总时间复杂度 \(O(n^{\frac{2}{3}})\)

例题:

P1829 Crash 的数字表格

求:

\[\sum\limits_{i=1}^n\sum\limits_{j=1}^m\text{lcm}(i,j) \]

\(n,m\leqslant 10^7\)

P3327 [SDOI2015] 约数个数和

求:

\[\sum\limits_{i=1}^n\sum\limits_{j=1}^m\text{d}(ij) \]

\(1\leqslant T,n,m \leqslant 5\times 10^4\)

提示:

\[\text{d}(i,j)=\sum\limits_{x|i}\sum\limits_{y|i}[i\ \bot\ j] \]

posted @ 2022-10-16 13:13  Code_AC  阅读(70)  评论(0编辑  收藏  举报