sss

<更新提示>

<第一次更新>


<正文>

简单积性函数

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

定义

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

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

简单积性函数

约数个数函数

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

约数和函数

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

元函数

[e(n)=egin{cases}1 (n=1)\0 (n ot =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)=egin{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 imes 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 imes 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 imes g=sum_{d|n}f(n)g(frac{n}{d})\=sum_{d|n}g(n)f(frac{n}{d})=g imes f ]

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

证明:
设有数论函数(f)(g)(h),则有

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

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

证明:
设有数论函数(f)(g)(h),则有

[(g+h) imes 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 imes f+h imes f]

简单卷积

(1.) (f imes e=f)

证明:

[(f imes 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 imes f^{-1})成立,可以用如下方式构造:

[f^{-1}(n)=egin{cases} frac{1}{f(1)} (n=1)\-frac{1}{f(1)}sum_{d|ncap d<n}f (frac{n}{d})f^{-1}(d) (n ot=1)end{cases}]

(2.) (e=mu imes I)

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

[(mu imes 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 imes I)(n)=sum_{Ssubseteq P}left (mu(prod_{pin S}p) + mu(p_kprod_{pin S}p) ight ) ]

(mu)函数的性质可知:

[(mu imes I)(n)=0 (n>1) ]

(n=1)((mu imes I)(1)=1),所以有(e=mu imes I)

(3.) (phi=mu imesε)

证明:

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

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

(4.) (sigma=I imes epsilon)

证明:
利用定义展开,得

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

(5.) ( au=I imes I)

证明:
利用定义展开,得

[(I imes I)(n)=sum_{d|n}I(frac{n}{d})I(d)\=sum_{d|n}1= au(n) ]

简单运用

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

证明:

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

(2.) 两次(dirichlet)卷积,可以得到:(sigma= au imesphi)

证明:

[sigma(n)=(I imesepsilon)(n)=(I imes I imesphi)(n)=( au imes 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 imes f),试证明(f=mu imes F),可以利用(dirichlet)卷积推导:

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

运用

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


<后记>

原文地址:https://www.cnblogs.com/Parsnip/p/10751025.html