<更新提示>

<第一次更新>


<正文>

简单积性函数

在学习欧拉函数的时候,相信读者对积性函数的概念已经有了一定的了解。接下来,我们将相信介绍几种简单的积性函数,以备\(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. JavaScript引用类型-Object类型

    创建Object的方式有两种: 第一种:使用new操作符后跟Object操作函数. var person = new Object(); person.name = "wang"; ...

  2. svn部署项目

    svn部署项目 在svn服务器上文件夹拷入项目文件~然后直接检出文件夹~即可

  3. 高质量的内容是SEO的关键

    内容是最有效的SEO策略,但也是最难执行的 正确的目录对SEO(搜索引擎优化:search engine optimization)关乎重大.根据Ascend2在2014年4月对全球营销专业人士做的调 ...

  4. Spring Security Oauth2系列(一)

    前言: 关于oauth2,其实是一个规范,本文重点讲解spring对他进行的实现,如果你还不清楚授权服务器,资源服务器,认证授权等基础概念,可以移步理解OAuth 2.0 - 阮一峰,这是一篇对于oa ...

  5. 阿里云和腾讯云免费SSL证书 专题

    阿里云部署SSL证书 http://www.cnblogs.com/sslwork/p/5984167.html 查找中间证书 为了确保兼容到所有浏览器,我们必须在阿里云上部署中间证书,如果不部署证书 ...

  6. aliyun TableStore相关操作汇总

    总结:这个东西本身可能技术还不成熟,使用的人少,有问题很验证解决 遇到的问题:(1)没有一个GUI工具,使用门槛高(2)查询的GetRange不方便,把查询出来的数据使用System.out.prin ...

  7. JS中的常量

    javascript中没有常量,可以通过创建只能取值不能赋值的私有变量来模仿常量. 创建取值器: var Class = function(){ var NUM = 5;   //  在运行时NUM值 ...

  8. 15.app后端怎么设计用户登录方案

    在很多app中,都需要用户的登录操作.登录,就需要用到用户名和密码.为了安全起见,暴露明文密码的次数越少越好.怎么能最大程度避免泄露用户的密码呢?在登录后,app后端怎么去验证和维持用户的登录状态呢? ...

  9. 由一条sql语句想到的子查询优化

    摘要:相信大家都使用过子查询,因为使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,比较灵活,我也喜欢用,可最近因为一条包含子查询的select count(*)语句导致点开管理系 ...

  10. dictionary.go

    package sego import "github.com/adamzy/cedar-go" // Dictionary结构体实现了一个字串前缀树,一个分词可能出现在叶子节点也 ...