数论函数(一)

转载请标明出处

目录

转载请标明出处

1.前言

2.数论函数介绍

2.1加性函数

2.1.1加性函数的性质

2.1.2一些加性函数的例子

2.2积性函数

2.2.1积性函数的性质

2.1.2一些积性函数的例子

2.3数论函数的重要操作

2.4一些非算术函数的例子

3.莫比乌斯函数

3.1定义

3.2性质

4.梅滕斯函数

4.1定义

4.2性质

5.刘维尔函数

5.1定义

5.2性质

6.卷积

6.1广义卷积

6.2狄利克雷卷积

6.2.1 定义

6.2.2 意义

6.2.3 具体计算

6.2.4 有关狄利克雷卷积意义下的交换群

7.莫比乌斯反演公式

7.1定义

7.1.1 因数反演公式

7.1.2 倍数反演公式(比较常用)

7.2 应用

7.2.1 计算  与  卷积的某一项

7.2.2 整数分块

7.2.3 计算      ,

8.参考文献  

8.1 文章或其他资料的地址

8.2感谢

9.打“[x]”的式子的证明过程

9.1 为什么要给出证明

9.2具体证明

9.2.1 对式子[1]的证明

9.2.2 对式子[2]的证明

9.2.3 对式子[3]的证明

9.2.4 对式子[4]的证明

9.2.5 对式子[5]的证明

9.2.6 对式子[6]的证明

10.对“反演”的补充

10.1 概念

10.1. 1文字概念

10.1.2 数学概念

10.2几个常见的反演公式

10.2.1莫比乌斯反演

10.2.2二项式反演

10.2.3斯特林反演

10.2.4伯努利反演

10.2.5拉氏反演

11. 结语

 


1.前言

这篇博客在诞生之前,我对数论函数研究了两天,把一些最基本的概念和关系在这里做出相对详细的阐述,便于自己和网友的理解。

 

2.数论函数介绍

数论函数是算术函数的另一种叫法。数论函数分为了两种:加性函数和积性函数。

 

2.1加性函数

2.1.1加性函数的性质

加性函数具有以下性质:设函数f为加性函数,且f(1)=1a,b互质,则f(a+b) = f(a)+f(b)

如果,a,b为任意数,也有f(a+b) = f(a)+f(b),那么f完全加性函数

2.1.2一些加性函数的例子

有很多常见的加性函数,比如:

1.    \Omega (n),表示 n 的质因子的数目(可算重复因子),其中,  \Omega (1)=1

2.    \omega (n),   表示n 的相异因子数目

3.   a_0(n),   表示所有n 的质因子之和(可算重因子)

4.   a_1(n),   表示所有n 的相异因子之和

 

2.2积性函数

2.2.1积性函数的性质

2.2.1.1 性质一

积性函数具有以下性质,设函数f为积性函数,且f(1)=1a,b互质, 则f(a\cdot b) = f(a)\cdot f(b)

如果,a,b为任意数, 也有f(a\cdot b) = f(a)\cdot f(b),那么f完全积性函数

2.2.1.2 性质二

设函数 f 为积性函数,且有    \bg_white n=\prod_{i=1}^{m} p_i^{k_i}  ,那么有  f(n) = \prod_{i=1}^{m} f(p_i^{k_i})   . 若函数 f 为完全积性函数,则

f(n)=\prod_{i=1}^{m}f(pi)^{k_1}

2.2.1.3 性质三

设函数 fg 为积性函数,那么 f * g 也为积性函数。

 

2.1.2一些积性函数的例子

有很多常见的积性函数,比如:

1.  \phi (n),  欧拉函数,  表示与n 互质的数的数目

2.  \mu (n),  莫比乌斯函数

3.  gcd(n,k),  k 固定

4.  \lambda (n),  刘维尔函数(完全积性函数),其中   \lambda (n)=(-1)^{\Omega (n)}, \Omega (n)  (加性函数,上面有提过)

5.  id(n), 单位函数(完全积性函数),其中  id(n) = n

6.  所有狄利克雷特征的

 

2.3数论函数的重要操作

数论函数的重要操作是狄利克雷卷积(是卷积的一个子集)

 

2.4一些非算术函数的例子

2.4.1        \Lambda (n) =\left\{\begin{matrix} ln(p),n=p^k\\ 0,else \end{matrix}\right.  , 其中p是质数

 

2.4.2         \pi (n), 表示不大于正整数n 的素数数目

 

2.4.3         p(n), 表示整数n 的拆分方案数目

 

 

3.莫比乌斯函数

3.1定义

莫比乌斯函数记为 \mu (n)

  \mu (n) = \left\{\begin{matrix} 1,n=1\\ (-1)^r,n=p_1\cdot p_2\cdot ...\cdot p_r\\ 0,else \end{matrix}\right.

n 由 r个不重因子组成时,是    (-1)^r

3.2性质

3.2.1 积性函数

 

3.2.2 无穷级数

3.2.2.1 级数一:      \sum_{n=1}^{\infty }\frac{\mu (n)}{n}=0

3.2.2.2 级数二:      \sum_{n=1}^{\infty }\frac{\mu (n)\cdot ln(n)}{n}=-1

3.2.2.3 级数三:      \sum_{n=1}^{\infty }\frac{\mu (n)\cdot x^n}{1-x^n}=x

3.2.3 与刘维尔函数   \lambda (n)=\sum_{d^2|n} \mu (\frac{n}{d^2})

 

3.2.4 假设  n = p_1^{a_1}\cdot p_2^{a_2}\cdot...\cdot p_n^{a_n},  

                                    \sum_{d|n}\mu(d) = \sum_{i=0}^{k}\binom{k}{i}\cdot (-1)^i=\left\{\begin{matrix} 1,n=1\\ 0,n>1 \end{matrix}\right.

 

3.2.5 与欧拉函数      \sum_{d|n}\frac{\mu(d)}{d} =\frac{\phi (n)}{n}

 

4.梅滕斯函数

4.1定义

梅滕斯函数记为 M(n)

M(n)=\sum_{k=1}^{n}\mu(k)

4.2性质

4.2.1 非积性函数

4.2.2 梅滕斯函数是莫比乌斯函数的求和

 

5.刘维尔函数

5.1定义

刘维尔函数记为 \lambda (n), 这在上面的积性函数中提到过

5.2性质

5.2.1 完全积性函数

5.2.2 求和              \sum_{d|n}\lambda (d)=\left\{\begin{matrix} 1,n=p^2\\ 0,n\neq p^2 \end{matrix}\right.

5.2.3 与莫比乌斯   \lambda(n)=\sum_{d^2|n}\mu(\frac{n}{d^2})

 

6.卷积

6.1广义卷积

6.1.1 连续卷积

设   f(x),g(x) 在 R 上可积,

则    (f * g )(n)=\int_{-\infty }^{\infty}f(\zeta )\cdot g(n-\zeta)d(\zeta)

 

6.1.2 离散卷积

设   f(x),g(x) 在 \mathbb{Z} 上可积,

则   (f * g )(n)=\sum_{m=-\infty }^{\infty}f[m]\cdot g[n-m]\Rightarrow \sum_{m=-\infty }^{\infty}f[n-m]\cdot g[m]

 

6.1.3 计算方法

 

6.1.3.1 直接按定义计算

6.1.3.2 快速傅里叶变换 (FFT)

6.1.3.3 分段卷积 (+FFT)

6.1.3.4 数论变换 \Leftrightarrow 快速数论变换 (NTT)

 

6.2狄利克雷卷积

6.2.1 定义

设     f(x),g(x) 是两个数论函数,

则    (f * g )(n)=\sum_{d|n}^{\infty}f(d)\cdot g(\frac{n}{d})

6.2.2 意义

取两个算术函数,计算它们的狄利克雷卷积,则  (f * g )(n)  就是积性函数

6.2.3 具体计算

6.2.3.1 计算一次的情况

设函数  f,g 已知且为积性函数,设  h=f*g  ,求  h(n)   ?

for(int i=1;i*i<=n;++i)
{
	if(n%i)	continue;
	
	h[n]+=f[i]*g[n/i];
	if(i*i!=n)	
		h[n]+=f[n/i]*g[i];
}

 

6.2.3.2 计算 n 次的情况

设函数  f,g 已知且为积性函数,设  h=f*g  ,求 h(1) \rightarrow h(n)  ?

memset(h,0,sizeof(h));
for(int i=1;i<=n;++i) 
	for(int j=1;j*i<=n;++j)
		h[i*j]+=f[i]*g[j]; 

 

6.2.4 有关狄利克雷卷积意义下的交换群

6.2.4.1 单位元

狄利克雷交换群下的单位元,我们设为 e

那么 e 必须满足 :设函数 f 为积性函数,则有 f=f*e

6.2.4.2 积性函数在狄利克雷卷积意义下的逆

设函数 f 为积性函数,若存在 e = f*g , 则称 g 为 f 的逆

6.2.4.3 莫比乌斯函数与 1 的卷积

莫比乌斯函数与 1 的关系: e = \mu *1 [1]

这意味着,\mu 和 1 在狄利克雷卷积下互为逆元

6.2.4.4 欧拉函数与 1 的卷积

欧拉函数与 1 的关系: id = \phi * 1 [2]

其中,id 叫做单位函数(在积性函数提到过)

 

7.莫比乌斯反演公式

7.1定义

7.1.1 因数反演公式

设函数 f 为积性函数,设   F(n) =\sum_{d|n} f(d) ,  那么有  f(n) = \sum_{d|n} \mu(d) \cdot F(\frac{n}{d})  [3]

7.1.2 倍数反演公式(比较常用)

设函数 f 为积性函数,设   F(n) =\sum_{n|d}f(d) ,  那么有  f(n) = \sum_{n|d}\mu(\frac{d}{n}) \cdot F(d)  [4]

所谓反演,即从和函数推导算术函数 

 

7.2 应用

7.2.1 计算 f 与 1 卷积的某一项

设函数 f 为积性函数,设函数 g = f*1 ,求 g(n)   ?   (n<=1^{18})

有  n = \prod_{i=1}^{t}p_i^{k_i},  使用 Pollard_rho  算法分解因式,复杂度  O(n^{\frac{1}{4}}\cdot log n)

而且   g(n) = \sum_{d|n} f(d)  ,

通过化简, 我们就得到了 g(n) = \prod_{i=1}^{t}\sum_{j=0}^{k_i} f(p_i^j)    [5]

于是,计算 g(n) 的时间复杂度变成了 O(log n)

 

7.2.2 整数分块

设函数 f 为积性函数,求   f(n) = \sum_{i=1}^{n} g(i) \cdot \left \lfloor \frac{n}{i} \right \rfloor   ? 

设   \left \lfloor \frac{n}{i} \right \rfloor  的值固定,那么 i  的浮动范围是      [\left \lfloor \frac{n}{\left \lfloor \frac{n}{i}\right \rfloor+1} +1\right \rfloor,\left \lfloor \frac{n}{\left \lfloor \frac{n}{i} \right \rfloor} \right \rfloor]   .

我们可以预先处理 g 函数的前缀和,这样可以 O(1)  算  g  的区间和,时间复杂度变成了 O(\sqrt n)

 

7.2.3 计算   \sum_{i=1}^{n}\sum_{j=1}^{m}f(gcd(i,j))   ,(n<m)

化简得到: \sum_{D=1}^{n}\sum_{d|D}f(d)\cdot \mu(\frac{D}{d}) \cdot \left \lfloor \frac{n}{D} \right \rfloor \cdot \left \lfloor \frac{m}{D} \right \rfloor   [6]

 

 

8.参考文献  

8.1 文章或其他资料的地址

1https://www.zhihu.com/question/23764267/answer/26007647

2.https://wenku.baidu.com/view/fbec9c63ba1aa8114431d9ac.html

3.https://www.cnblogs.com/zhouzhendong/p/8627380.html

4.https://blog.csdn.net/skywalkert/article/details/50500009

5.https://blog.csdn.net/jk_chen_acmer/article/details/82712276

6.https://blog.csdn.net/qq_41157137/article/details/83474978

7.https://wenku.baidu.com/view/f87f4b55b14e852459fb572b.html?from=search

8.https://baike.baidu.com/item/%E5%BA%8F%E5%88%97%E5%8F%8D%E6%BC%94/18894077?fr=aladdin

9.https://blog.csdn.net/hhaannyyii/article/details/79335883

8.2感谢

在此,向以上原创作者表示衷心的感谢

 

9.打“[x]”的式子的证明过程

9.1 为什么要给出证明

在上面的文章中,有一些式子的结尾带有“[x]”的标记,x是数字。表明这个式子最好需要能够给出证明过程,因为可以加深印象

 

9.2具体证明

9.2.1 对式子[1]的证明

\because (\mu * 1)(n) = \sum_{d|n} \mu(d) =\begin{cases} 1 & \text{ if } n=1 \\ 0 & \text{ if } n>1 \end{cases}

\therefore \mu *1 = [e==1]

 

9.2.2 对式子[2]的证明

\because id(n) = n

\therefore  即证明  n = \phi *1

\therefore  即证明  n = \sum_{d|n} \phi(d)

设       n = \prod_{i=1}^{t}p_i^{a_i},

引理1:\phi(p^k) = p^k-p^{k-1}  (p是质数)

证明引理1:显然,在 1 ~ p^k 中,只有 p 的倍数与 p^k 不互质,那么共有 \frac{p^k}{p}=p^{k-1} 个数与 p^k 不互质,那么就有 p^k-p^{k-1}   个数与 p^k 互质。

引理2: \sum_{j=0}^{k_i}\phi(p_i^j) = p_i^{k_i} (p是质数)

证明引理2:由引理1显然   

\sum_{j=1}^{k_i}\phi(p_i^j)=\phi(p_i^{0})+\phi(p_i^1)+...+\phi(p_i^{k_i})=1+(p_i-1)+(p_i^2-p_i)+...+(p_i^{k_i}-p_i^{k_i}-1)

那么原式就等于 p_i^{k_i}

显然,由引理2,我们可以得到: n=\prod_{i=1}^{t}p_i^{k_i}=\prod_{i=1}^{t}\sum_{j=0}^{k_i}\phi(p_i^j)

 

9.2.3 对式子[3]的证明

证明这个式子,我所知道的有两种方法:

9.2.3.1 方法一(单位元法)

\because F=\sum_{d|n}f(d)=f*1

\therefore F*\mu=f*1*\mu

\because 1*\mu=e

\therefore F *\mu = f

\therefore f(n)=\sum_{d|n} \mu(d)\cdot F(\frac{n}{d})

 

9.2.3.2 方法二

f(n)=\sum_{d|n}\mu(d) \cdot F(\frac{n}{d})=\sum_{d|n}\mu(d)\cdot \sum_{k|\frac{n}{d}}fk)=\sum_{k|n}f(k) \cdot \sum_{d|\frac{n}{k}}\mu(d)

=f(n)

最后一个等号的成立,是因为只有当 n=1  时,  \sum_{d|n}\mu(d)=1 

 

9.2.4 对式子[4]的证明

f(n)=\sum_{n|d}\mu(\frac{d}{n}) \cdot F(d){\underset{k=\frac{d}{n}}{\rightarrow}} f(n)=\sum_{k=1}^{+\infty}\mu(k)\cdot F(n \cdot k)

= \sum_{k=1}^{+\infty} \mu(k)\cdot \sum_{n \cdot k|t} f(t)

= \sum_{n|t} f(t)\cdot \sum_{k|\frac{t}{n}}\mu(k)

=f(n)

最后一个等号的成立的原因同上

 

9.2.5 对式子[5]的证明

\because g(n)=\sum_{d|n} f(d)

\because n=\prod_{i=1}^{t}p_i^{k_i}

\therefore g(n)= \prod_{i=1}^{t}g(p_i^{k_i})

\because g(p_i^{k_i})=\sum_{j=0}^{k_i}f(p_i^j)

\therefore g(n)=\prod_{i=1}^{t} \sum_{j=0}^{k_i}f(p_i^j)

 

9.2.6 对式子[6]的证明

\sum_{i=1}^{n}\sum_{j=1}^{m}f(gcd(i,j))

=\sum_{d=1}^{n}f(d)\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)==d]

=\sum_{d=1}^{n}f(d)\sum_{d*i=1}^{n}\sum_{d*j=1}^{m}[gcd(d*i,d*j)==d]

=\sum_{d=1}^{n}f(d)\sum_{i=1}^{\left \lfloor \frac{n}{d} \right \rfloor}\sum_{j=1}^{\left \lfloor \frac{m}{d} \right \rfloor}[gcd(i,j)==1]

设   g(d,n,m)=\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)==d]

设   f= g*1,  有   f(d,n,m) = \sum_{d|D}g(D,n,m)=\sum_{i=1}^{n}\sum_{j=1}^{m}[d|gcd(i,j)]=\left \lfloor \frac{n}{d} \right \rfloor \cdot \left \lfloor \frac{m}{d} \right \rfloor

由倍数反演,得到:
g(d,n,m)=\sum_{d|D}\mu(\frac{D}{d}) \cdot f(D,n,m) = \sum_{d|D}=\mu(\frac{D}{d}) \cdot \left \lfloor \frac{n}{D} \right \rfloor \cdot \left \lfloor \frac{m}{D} \right \rfloor

\because  要求 gcd(i,j)==1

\therefore  求 gcd(1,n,m)

\because g(1,n,m) = \sum_{i=1}^{n} \mu(i) \cdot \left \lfloor \frac{n}{i} \right \rfloor\cdot \left \lfloor \frac{m}{i} \right \rfloor

\therefore

 =\sum_{d=1}^{n}f(d) \cdot g(d,n,m)

=\sum_{d=1}^{n}f(d) \cdot \left \lfloor \frac{n}{d} \right \rfloor\cdot \left \lfloor \frac{m}{d} \right \rfloor

=\sum_{d=1}^{n}f(d) \sum_{i=1}^{\left \lfloor \frac{n}{d}\right \rfloor}\mu(i) \cdot \left \lfloor \frac{n}{d*i} \right \rfloor\cdot \left \lfloor \frac{m}{d*i} \right \rfloor

=\sum_{D=1}^{n} \sum_{d|D}f(d)\cdot\mu(\frac{D}{d}) \cdot \left \lfloor \frac{n}{D} \right \rfloor\cdot \left \lfloor \frac{m}{D} \right \rfloor

 

10.对“反演”的补充

10.1 概念

10.1. 1文字概念

我们说“反演”,那么相对的就会有“正演”。

所谓”正演“就是知道了原因,就能推导出结果。

而所谓”反演“就是知道了结果,就能反推导出原因。

10.1.2 数学概念

注:这里的反演指的是“级数之间的互反关系”或者“整数序列的互反关系”

设两个函数 f,g 若有如下关系的一种:

f(n)=\sum_{i=0}^{n}C_{n,i}g(i)

g(n)=\sum_{i=0}^{n}H_{n,i}f(i)

那么,另一种个关系必然成立,在下面介绍的几个反演公式中也用这两种方程表示

其中,C_{n,i},H_{n,i} 是 系数矩阵

 

10.2几个常见的反演公式

10.2.1莫比乌斯反演

上面提到过,这里不再赘述

 

10.2.2二项式反演

f(n)=\sum_{i=0}^{n}\binom{n}{i}g(i)

f(n)=\sum_{i=0}^{n}(-1)^{n-i}\binom{n}{i}g(i)

 

10.2.3斯特林反演

这里,斯特林反演包含了“第一类斯特林数”和“第二类斯特林数”之间的关系

f(n)=\sum_{i=0}^{n}s_1(n,i) \cdot g(i)

g(n)=\sum_{i=0}^{n}s_2(n,i) \cdot f(i)

其中,s_1(n,i)  表示第一类斯特林数,s_2(n,i)  表示第二类斯特林数

 

10.2.4伯努利反演

10.2.4.1 伯努利数介绍

伯努利数的前几项分别为:B_0=1,B_1=-\frac{1}{2},B_2=-\frac{1}{6},B_3=0,....

特点:除  B_1  以外,所有奇数项的 伯努利数均为0

伯努利数的递推式:B_n=[n==0] - \sum_{i=0}^{n-1} \frac{B_i}{n-i+1} \cdot \binom{n}{i}

其中       [n==0]=\begin{cases} 1 & \text{ if } x=0 \\ 0 & \text{ if } x>0 \end{cases}

 

10.2.4.2 伯努利数在求等幂级数上的应用

所谓等幂级数,就是: s(n,m)=\sum_{i=1}^{n} i^m 

利用伯努利数,化简得到:s(n,m)=\frac{1}{m+1}\cdot \sum_{i=0}^{m}\cdot (-1)^i\cdot \binom{m+1}{i}\dot B_i \cdot n^{m+1-i}

现在,让我们思考一下,如果(n<=1e18,m<=1e9)如果用直接计算的方法,来算第一个等式的话,

时间复杂度变成了  O(n \cdot log n), 明显超时

但是,如果采用经过化简得第二个式子的话,时间复杂度变成了 O(m+m \cdot log m) 

但是,实际上,第二个式子是得到了一个关于在 m 变化的基础上得到的一个关于 n 的通项公式

这里我写出伯努利数分子分母的 OEIS 号码:分子:A027641,  分母:A027642

 

10.2.4.3  伯努利反演

f(n)=\sum_{i=0}^{n}\binom{n}{i} \frac{b_i}{n-i+1}

g(n)=\sum_{i=0}^{n}\binom{n}{i} \cdot B_{n-i} \cdot f(i)

 

10.2.5拉氏反演

10.2.5.1 拉氏数(也叫 lah 数)

拉氏数的通项公式是:L(n,k)=(-1)^n \cdot \frac{n!}{k!} \cdot \binom{n-1}{k-1}

拉氏数的递推式是:L(n+1,k)=-(n+k) \cdot L(n,k) - L(n,k-1)

其中,L(0,0)=1,L(0,1)=0

还有,L(n,k)=0(n<k),L(n,n)=(-1)^n

 

10.2.5.2 拉氏反演

f(n)=\sum_{i=0}^{n}L(n,k) \cdot g(i)

g(n)=\sum_{i=0}^{n}L(n,k) \cdot f(i)

 

11. 结语

有任何问题,欢迎留言

 

 

 

 

你可能感兴趣的:(数论,基础知识,数学)