<更新提示>

<第一次更新>


<正文>

简单积性函数

在学习欧拉函数的时候,相信读者对积性函数的概念已经有了一定的了解。接下来,我们将相信介绍几种简单的积性函数,以备\(dirichlet\)卷积的运用。

定义

数论函数:在数论上,对于定义域为正整数,值域为复数的函数,我们称之为数论函数。

积性函数:对于数论函数\(f\),若满足\(gcd(a,b)=1\)时,有\(f(ab)=f(a)f(b)\),则称函数\(f\)为积性函数

简单积性函数

约数个数函数

\[\tau(n)=\sum_{k|n}1
\]

约数和函数

\[\sigma(n)=\sum_{k|n}k
\]

元函数

\[e(n)=\begin{cases}1\ (n=1)\\0\ (n\not =1)\end{cases}
\]

恒等函数

\[I(n)=1
\]

单位函数

\[\epsilon(n)=n
\]

欧拉函数

\[\phi(n)=\sum_{i=1}^n[gcd(n,i)==1]
\]

\(Möbius\)函数

\[n=\prod_{i=1}^kp_i^{a_i},\mu(n)=\begin{cases}1\ (n=1)\\(-1)^k\ (\forall\ c_i=1)\\0\ (\exists\ c_i>1)\end{cases}
\]

简单积性函数的求解

与经典的\(Möbius\)函数和欧拉函数同理,这些积性函数都是可以通过线性筛的过程顺带地求出来的,我们不再详细讨论,具体可以参见\(hezlik\)的博客

dirichlet卷积

定义

\(dirichlet\)卷积是数论函数之间的一种运算,我们设有两个数论函数\(f\)和\(g\),它们的定义域为正整数\([1,n]\),那么它们的\(dirichlet\)卷积可以如下表示:

\[(f \times g)(n)=\sum_{d|n}f(x)g(\frac{n}{d})
\]

我们可以简单地用\(O(nlog_2n)\)的时间求出两个函数的\(dirichlet\)卷积,其时间复杂度可以使用调和级数证明。

\(Code:\)

inline void dirichlet(long long *a,long long *b)
{
long long res[N]={};
for (int i=1;i<=n;i++)
for (int j=1;j*i<=n;j++)
res[i*j] = (res[i*j] + a[i] * b[j] % Mod) % Mod ;
memcpy( a , res , sizeof res );
}

性质

\(1.\) 两个积性函数\(f\)和\(g\)的\(dirichlet\)卷积仍为积性函数。

证明:

设有两个积性函数\(f\)和\(g\),则它们的\(dirichlet\)卷积为:

\[h=f\times g=\sum_{d|n}f(d)g(\frac{n}{d})
\]

对于函数\(h\)则可以得到:

\[h(x)h(y)=(\sum_{d_1|x}f(d_1)g(\frac{x}{d_1}))(\sum_{d_2|y}f(d_2)g(\frac{y}{d_2}))
\\=\sum_{d_1|x,d_2|y}f(d_1d_2)g(\frac{xy}{d_1d_2})\\=\sum_{d|xy}f(d)g(\frac{xy}{d})=h(xy)\]

故函数\(h\)为积性函数。

\(2.\) \(dirichlet\)卷积满足交换律。

证明:

设有数论函数\(f\)和\(g\),则有

\[f\times g=\sum_{d|n}f(n)g(\frac{n}{d})\\=\sum_{d|n}g(n)f(\frac{n}{d})=g\times f
\]

\(3.\) \(dirichlet\)卷积满足结合律。

证明:

设有数论函数\(f\),\(g\)和\(h\),则有

\[(f\times g)\times h=f\times g \times h\\=g\times h \times f=(g\times h)\times f\\=f\times (g\times h)
\]

\(4.\)\(dirichlet\)卷积满足分配律。

证明:

设有数论函数\(f\),\(g\)和\(h\),则有

\[(g+h)\times f=\sum_{d|n}(g(d)+h(d))f(\frac{n}{d})
\\=\sum_{d|n}g(d)f(\frac{n}{d})+\sum_{d|n}h(d)f(\frac{n}{d})
\\=g\times f+h\times f\]

简单卷积

\(1.\) \(f\times e=f\)

证明:

\[(f\times e)(n)=\sum_{d|n}f(d)e(\frac{n}{d})\\=\sum_{d|n}f(d)[\frac{n}{d}==1]\\=\sum_{d|n}f(d)[n==d]=f(n)
\]

由上,我们证明了\(dirichlet\)卷积这种运算的单位元为原函数\(e\),我们可以进一步地定义出数论函数\(f\)的逆函数\(f^{-1}\),使得\(f\times f^{-1}\)成立,可以用如下方式构造:

\[f^{-1}(n)=\begin{cases}\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \frac{1}{f(1)}\ (n=1)\\-\frac{1}{f(1)}\sum_{d|n\cap d<n}f
(\frac{n}{d})f^{-1}(d)\ (n\not=1)\end{cases}\]

\(2.\) \(e=\mu\times I\)

证明:

考虑\(Möbius\)函数的一个性质,对于质数\(p\)和整数\(a\)满足\(p\not|a\),有\(\mu(ap)+\mu(a)=0\),这是可以由\(Möbius\)函数的定义得到的,那么我们设\(n=\prod_{i=1}^kp_i^{a_i}\),则

\[(\mu \times I)(n)=\sum_{d|n}\mu(d)I(\frac{d}{n})=\sum_{d|n}\mu(d)
\]

事实上枚举了\(n\)的每一个约数,并对其的\(\mu\)函数值进行了求和。

设\(P=\{1,p_1,p_2,...,p_{k-1}\}\),由此可得:

\[(\mu \times I)(n)=\sum_{S\subseteq P}\left (\mu(\prod_{p\in S}p) + \mu(p_k\prod_{p\in S}p)\right )
\]

由\(\mu\)函数的性质可知:

\[(\mu \times I)(n)=0\ (n>1)
\]

而\(n=1\)时\((\mu \times I)(1)=1\),所以有\(e=\mu\times I\)。

\(3.\) \(\phi=\mu\timesε\)

证明:

欧拉函数是可以用容斥原理算的,考虑到\(\mu\)函数的定义,发现\(\mu\)可以恰好可以作为欧拉函数的容斥系数,即有:

\[\phi(n)=n+\sum_{x\not =1\cap x|n}\frac{n}{x}\mu(x)\\=\sum_{x|n}\frac{n}{x}\mu(x)=(\mu \times ε)(n)
\]

\(4.\) \(\sigma=I\times \epsilon\)

证明:

利用定义展开,得

\[(I\times \epsilon)(n)=\sum_{d|n}I(\frac{n}{d})\epsilon(d)\\=\sum_{d|n} d=\sigma(n)
\]

\(5.\) \(\tau=I\times I\)

证明:

利用定义展开,得

\[(I\times I)(n)=\sum_{d|n}I(\frac{n}{d})I(d)\\=\sum_{d|n}1=\tau(n)
\]

简单运用

\(1.\) 欧拉函数具有性质:\(n=\sum_{d|n}\phi(\frac{n}{d})\)

证明:

\[n=\epsilon(n)=(\epsilon \times e)(n)=(\epsilon\times \mu \times I)(n)\\=(\phi\times I)(n)=\phi(n)
\]

\(2.\) 两次\(dirichlet\)卷积,可以得到:\(\sigma=\tau \times\phi\)

证明:

\[\sigma(n)=(I\times\epsilon)(n)=(I\times I\times\phi)(n)=(\tau \times \phi)(n)
\]

\(3.\) 可以推得\(Möbius\)定理:\(F(n)=\sum_{d|n}f(d)\Leftrightarrow f(n)=\sum_{d|n}\mu(d)F(\frac{n}{d})\)

证明:

已知\(F=I\times f\),试证明\(f=\mu\times F\),可以利用\(dirichlet\)卷积推导:

\[F=I\times f \\\mu\times F=\mu \times I \times f \\\mu \times F=e \times f=f
\]

运用

多数时候,对于约数求和式和一些有关数论函数的运算都可以和\(dirichlet\)卷积搭上关系,相当于可以作为推导式子的一个有用工具,其关键在于熟悉定义及其运算,重要常见的几个卷积需要我们牢记。


<后记>

『简单积性函数和dirichlet卷积』的更多相关文章

  1. 积性函数与Dirichlet卷积

    转载自https://oi-wiki.org/math/mobius/ 积性函数 定义 若 $gcd(x,y)=1$ 且 $f(xy)=f(x)f(y)$,则 $f(n)$ 为积性函数. 性质 若 $ ...

  2. Codeforces E. Bash Plays with Functions(积性函数DP)

    链接 codeforces 题解 结论:\(f_0(n)=2^{n的质因子个数}\)= 根据性质可知\(f_0()\)是一个积性函数 对于\(f_{r+1}()\)化一下式子 对于 \[f_{r+1} ...

  3. 2017 CCPC 杭州 HDU6265B 积性函数

    题目链接 http://acm.hdu.edu.cn/downloads/CCPC2018-Hangzhou-ProblemSet.pdf B题 数论题      h(n)=∑ d|n φ(d) × ...

  4. 积性函数&线性筛&欧拉函数&莫比乌斯函数&因数个数&约数个数和

    只会搬运YL巨巨的博客 积性函数 定义 积性函数:对于任意互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数. 完全积性函数:对于任意整数a和b有性质f(ab)=f(a)f(b)的数论函数 ...

  5. codeforces757E. Bash Plays with Functions(狄利克雷卷积 积性函数)

    http://codeforces.com/contest/757/problem/E 题意 Sol 非常骚的一道题 首先把给的式子化一下,设$u = d$,那么$v = n / d$ $$f_r(n ...

  6. 『Möbius函数与Möbius反演』

    Möbius函数 定义 设正整数\(n\)算数基本定理分解后为\(n=\prod_{i=1}^{k}p_i^{a_i}\),定义函数 \[ \mu(n)= \begin{cases} 0\ \ (\e ...

  7. Master of Phi (欧拉函数 + 积性函数的性质 + 狄利克雷卷积)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6265 题目大意:首先T是测试组数,n代表当前这个数的因子的种类,然后接下来的p和q,代表当前这个数的因 ...

  8. Dirichlet 卷积学习笔记

    Dirichlet 卷积学习笔记 数论函数:数论函数亦称算术函数,一类重要的函数,指定义在正整数集上的实值或复值函数,更一般地,也可把数论函数看做是某一整数集上定义的函数. 然而百科在说什么鬼知道呢, ...

  9. [基本操作] Mobius 反演, Dirichlet 卷积和杜教筛

    Dirichlet 卷积是两个定义域在正整数上的函数的如下运算,符号为 $*$ $(f * g)(n) = \sum_{d|n}f(d)g(\frac{n}{d})$ 如果不强调 $n$ 可简写为 $ ...

随机推荐

  1. es6(五):class关键字(extends,super,static)

    ES5中,生成对象通过构造函数: function A(name,age){ this.name=name; this.age=age } // 在A的prototype属性上定义一个test方法,即 ...

  2. AUTOSAR分层-MCAL辨析

    8. AUTOSAR中MCAL虽然包含各种drvier,但毕竟是AL即抽象层,不应包含architecture和device特定的信息.应该只包含模型定义,不包含实现细节.   AUTOSAR文档中的 ...

  3. lambda隐藏函数的嵌套

    # 隐藏函数嵌套 f = (lambda a,b :a if a>b else b)(1000, 2000008) print((lambda a,g:a if a > g else g) ...

  4. 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  5. Junit-4.1.2 @Test 使用

    学习使用Junit-4.1.2 @Test来做单元测试 1.下载jar包 下载junit-4.12.jar 下载hamcrest-core-1.3.jar 2.在External Libraries中 ...

  6. 【转】js 好的程序设计,应该什么时候使用 try catch 呢?

    比如在检测浏览器是否支持某些功能的时候 if (!xx) { console.error('此浏览器不支持 xx 功能') } 还是 try { xx; } catch(e) { throw new ...

  7. vue 单页应用拆分为多页应用

    npm install glob --save-dev build.js---'./src/pages' 替换为自己实际的项目文件路径 utils.js--- webpack.base.conf.js ...

  8. Urllib库的使用

    一.任务描述   本实验任务主要对urllib库进行一些基本操作,通过完成本实验任务,要求学生熟练掌握urllib库的使用,并对urllib库的基本操作进行整理并填写工作任务报告. 二.任务目标 1. ...

  9. redis主从相关问题

    redis主从是如何实现同步的 第一次.Slave向Master同步的实现是:        Slave向Master发出同步请求(发送sync命令),Master先dump出rdb文件,然后将rdb ...

  10. PAT1083:List Grades

    1083. List Grades (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a l ...