ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数论函数初步

2022-07-29 09:06:14  阅读:156  来源: 互联网

标签:prime mu 函数 limits 数论 sum 初步 积性


数论函数初步

数论函数

数论函数&狄利克雷卷积

  1. 定义:在全体(正)整数上定义的函数为数论函数

  2. 积性定义:
    完全积性:\(f(ab)=f(a)f(b)\)

    积性:若\(\gcd(a,b)=1\),则\(f(ab)=f(a)f(b)\)

    规律:如果\(f(x),g(x)\) 为积性函数,则一下函数也有积性:

    \((f(x))^{-1},f(x)g(x),f(g(x)),f*g\)

  3. 积性函数举例:

    \[1(x)=1\\ Id(x)=x\\ \phi(x)\\ I(x)=[x==1]\\ \]

  4. 狄利克雷卷积

    定义数论函数\(f(n),g(n)\)的狄利克雷卷积为\(h(n)\):

    \[h(n)=\sum\limits_{d|n}f(d)g(\frac{n}{d}) \]

    记\(h=f*g\)

    定理:两个积性函数的卷积为积性函数。

    证明:

    \[h(xy)=\sum\limits_{d|xy}f(d)g(\frac{xy}{d})=\sum\limits_{d_1|x}\sum\limits_{d_2|y}f(d_1d_2)g(\frac{xy}{d_1d_2})\\=\sum\limits_{d_1|x}\sum\limits_{d_2|y}f(d_1)f(d_2)g(\frac{x}{d1})g(\frac{y}{d_2})=\\\sum\limits_{d_1|x}f(d_1)g(\frac{x}{d1})\sum\limits_{d_2|y}f(d_2)g(\frac{y}{d2})\\=h(x)h(y) \]

    定理:两个积性函数对应位置相乘也是积性函数

    由此,我们便可以定义更多数论函数,以卷积描述其之间的关系:

    \[d(n)=\sum\limits_{d|n},即d=1*1\\ Id(n)=n=\sum\limits_{d|n},即Id=\phi*1 \]

    狄利克雷卷积性质:

    1. 交换律:设两个函数\(f(n),g(n)\),有 \(f*g=g*f\)

    2. 结合律:设三个积性函数\(f,g,h\),有\((f*g)*h=f*(g*h)\)

    3. \(I\)是单位元:对于任意数论函数\(f\),\(f*I=I*f=f\)

      证明:$ f*I=\sum\limits_{d|n}f(d)I(\frac{n}{d})=f $

    4. 定义:狄利克雷逆

      若有\(f*g=I\) ,则数论函数\(f,g\)互为彼此的狄利克雷逆。

常见数论函数

单位函数: \(I(x)=[x==1]\)

幂函数:\(id_k(n)=n^k,id(n)=n\)

欧拉函数:\(\phi(n)=\sum\limits_{i=0}^{n-1}[gcd(x,n)==1]=n\times \prod\limits_{d|n}(1-\frac{1}{d})\)

莫比乌斯函数:\(\mu\)

莫比乌斯反演

莫比乌斯函数

定义

定义莫比乌斯函数\(\mu(x)\)

当\(x=1\)时,\(\mu(x)=1\)

当\(x\) 是 \(square-free~number\) (无平方因数)时,设其质因数分解有\(k\)项,\(\mu(x)=(-1)^k\)

否则,\(\mu(x)=0\)

可以证得\(\mu(x)\)为不完全积性函数:

若\(\gcd(x,y)=1\),显然有\(\mu(xy)=\mu(x)\mu(y)\)

定理

\(I=\mu*1\),即\(\mu\)与\(1\)彼此互逆

证明:

当\(x=1\)时,显然\(I=\mu*1\)

当\(x\)为\(square-free~number\)时,显然\(I=\mu*1\)

当\(x\)不为\(square-free~number\)时,设\(x=p_1p_2....p_k\):

\[\mu*1=\sum\limits_{d|x}^{}\mu(d)=\sum\limits_{i=1}^{k}\sum\limits_{k个里面选i个的乘积c}\mu(c)\\ =\sum\limits_{i=1}^{k}\begin{pmatrix}k\\i\end{pmatrix}(-1)^i=(1-1)^k=[k==0]=I(x) \]

\[其中\\ \sum\limits_{i=1}^{k}\begin{pmatrix}k\\i\end{pmatrix}(-1)^i=(1-1)^k\\ 使用了二项式定理\\ (x+y)^k=\sum\limits_{i=0}^{k}\begin{pmatrix}k\\i\end{pmatrix}x^{k-i}y^i \]

莫比乌斯变换&反演

变换:设数论函数\(f\),称\(F=f*1\) 为莫比乌斯变换

反演:设数论函数\(F\),称\(f=F*\mu\)为莫比乌斯反演

线性筛

埃氏筛法

\(O(n\log\log n)\)

bool no[maxn];
int prime[maxn],tot;
for(int i=2;i<=n;i++){
    if(no[i]) continue;
    prime[++tot]=i;
    for(int e=i+i;e<=n;e+=i) no[e]=1;
}

线性筛

\(O(n)\)

保证每个数只被其最小质因子筛去

bool no[maxn];
int prime[maxn],top;
for(int i=2;i<=n;i++){
   if(!no[i]) prime[++tot]=i;
    for(int e=1;e<=top&&prime[e]*i<=n;i++){
        no[prime[e]*i]=1;
        if(i%prime[e]==0) break;
	}
}
线性筛的用处

筛出某些积性函数在\(1\)~\(n\)的所有取值

基本思路:

在第二个循环时,若i%prime[e]!=0,则易得\(f(i*prime[e])=f(i)f(prime[e])\)

i%prime[e]==0,设\(prime[e]\)在\(i\)中的指数为\(k\),易得\(f(i*prime[e])=\frac{f(prime[e]^{k+1})}{f(prime[e]^k)}f(i)\)。

当然,要注意\(f(prime[e]^k)!=0\),如果等于\(0\),也可以这样\(f(i*prime[e])=f(\frac{i}{prime[e]^k})f(prime[e]^{k+1})\)

例一

有一数论函数:

\(f(1)=1\)

\(f(P^k)=P\)^\(k\) (P代表质数)

\(f(xy)=f(x)f(y),gcd(x,y)=1\)

求出\(f(n)\)

这个直接动用一下上面的思路即可

例二——线筛欧拉函数

首先欧拉函数有以下性质

  1. \(\phi(xy)=\phi(x)\phi(y),gcd(x,y)=1\)
  2. \(p|x,\phi(p\times x)=p\times \phi(x)\) \(\to\) \(\frac{\phi(k^{a+1})}{\phi(k^a)}=k\)
  3. \(\phi(prime)=prime-1\)

CODE

int prime[maxn],top,phi[maxn];
bool no[maxn];
inline void oula(){
    phi[1]=1;
    for(int i=2;i<=n;i++){
        if(!no[i]) prime[++top]=1,phi[i]=i-1;
        for(int e=1;e<=top&&prime[e]*i<=n;e++){
			no[prime[e]*i]=1;
            if(i%prime[e]==0){
                phi[i*prime[e]]=phi[e]*phi[i];
            	break;
            }
            phi[i*prime[e]]=phi[i]*phi[prime[e]];
        }
    }
}
例三——线筛莫比乌斯函数
  1. 积性
  2. 函数定义
  3. \(\frac{\mu(k^{a+1})}{\mu(k^a)}=0\)

CODE

int prime[maxn],top,mu[maxn];
bool no[maxn];
inline void oula(){
    mu[1]=1;
    for(int i=2;i<=n;i++){
        if(!no[i]) prime[++top]=1,mu[i]=-1;
        for(int e=1;e<=top&&prime[e]*i<=n;e++){
			no[prime[e]*i]=1;
            if(i%prime[e]==0){
                mu[i*prime[e]]=0;//因子有平方数
            	break;
            }
            mu[i*prime[e]]=mu[i]*mu[prime[e]];
        }
    }
}

例四——求出约数个数

在\(O(n)\)时间内求出函数\(\tau\)在\(1\)~\(n\)的所有取值

注:$\tau(n) \(指\)n$的因数个数

这里可以发现:

  1. \(\gcd(a,b)=1,\tau(ab)=\tau(a)\tau(b)\)
  2. \(\tau(prime)=2\)
  3. \(x=p_1^{k_1}p_2^{k_2}p_3^{k_3}....p_n^{k_n},\tau(x)=(k_1+1)(k_2+1)...(k_n+1)\)

CDOE

for(int i = 2; i <= n; i++){
	if(isp[i] == 0) {pr[++cnt] = i; tau[i] = 2; g[i] = 2;}
		for(int j = 1; j <= cnt && pr[j] * i <= n; j++){
		isp[i * pr[j]] = 1;
		if(i % pr[j] == 0) {
			tau[i * pr[j]] = (g[i] + 1) * tau[i] / g[i];
			g[i * pr[j]] = g[i] + 1;
			break;
		}
		tau[i * pr[j]] = tau[i] * 2;
		g[i * pr[j]] = 2;
	}
}

整数分块

例——求\(\sum\limits_{i=1}^{i=n}\llcorner \frac{n}{i}\lrcorner\)

这个东东只有\(\sqrt n\) 种取值,直接分块计算即可

练习

数论函数

数论函数&狄利克雷卷积

  1. 定义:在全体(正)整数上定义的函数为数论函数

  2. 积性定义:
    完全积性:\(f(ab)=f(a)f(b)\)

    积性:若\(\gcd(a,b)=1\),则\(f(ab)=f(a)f(b)\)

    规律:如果\(f(x),g(x)\) 为积性函数,则一下函数也有积性:

    \((f(x))^{-1},f(x)g(x),f(g(x)),f*g\)

  3. 积性函数举例:

    \[1(x)=1\\ Id(x)=x\\ \phi(x)\\ I(x)=[x==1]\\ \]

  4. 狄利克雷卷积

    定义数论函数\(f(n),g(n)\)的狄利克雷卷积为\(h(n)\):

    \[h(n)=\sum\limits_{d|n}f(d)g(\frac{n}{d}) \]

    记\(h=f*g\)

    定理:两个积性函数的卷积为积性函数。

    证明:

    \[h(xy)=\sum\limits_{d|xy}f(d)g(\frac{xy}{d})=\sum\limits_{d_1|x}\sum\limits_{d_2|y}f(d_1d_2)g(\frac{xy}{d_1d_2})\\=\sum\limits_{d_1|x}\sum\limits_{d_2|y}f(d_1)f(d_2)g(\frac{x}{d1})g(\frac{y}{d_2})=\\\sum\limits_{d_1|x}f(d_1)g(\frac{x}{d1})\sum\limits_{d_2|y}f(d_2)g(\frac{y}{d2})\\=h(x)h(y) \]

    定理:两个积性函数对应位置相乘也是积性函数

    由此,我们便可以定义更多数论函数,以卷积描述其之间的关系:

    \[d(n)=\sum\limits_{d|n},即d=1*1\\ Id(n)=n=\sum\limits_{d|n},即Id=\phi*1 \]

    狄利克雷卷积性质:

    1. 交换律:设两个函数\(f(n),g(n)\),有 \(f*g=g*f\)

    2. 结合律:设三个积性函数\(f,g,h\),有\((f*g)*h=f*(g*h)\)

    3. \(I\)是单位元:对于任意数论函数\(f\),\(f*I=I*f=f\)

      证明:$ f*I=\sum\limits_{d|n}f(d)I(\frac{n}{d})=f $

    4. 定义:狄利克雷逆

      若有\(f*g=I\) ,则数论函数\(f,g\)互为彼此的狄利克雷逆。

常见数论函数

单位函数: \(I(x)=[x==1]\)

幂函数:\(id_k(n)=n^k,id(n)=n\)

欧拉函数:\(\phi(n)=\sum\limits_{i=0}^{n-1}[gcd(x,n)==1]=n\times \prod\limits_{d|n}(1-\frac{1}{d})\)

莫比乌斯函数:\(\mu\)

莫比乌斯反演

莫比乌斯函数

定义

定义莫比乌斯函数\(\mu(x)\)

当\(x=1\)时,\(\mu(x)=1\)

当\(x\) 是 \(square-free~number\) (无平方因数)时,设其质因数分解有\(k\)项,\(\mu(x)=(-1)^k\)

否则,\(\mu(x)=0\)

可以证得\(\mu(x)\)为不完全积性函数:

若\(\gcd(x,y)=1\),显然有\(\mu(xy)=\mu(x)\mu(y)\)

定理

\(I=\mu*1\),即\(\mu\)与\(1\)彼此互逆

证明:

当\(x=1\)时,显然\(I=\mu*1\)

当\(x\)为\(square-free~number\)时,显然\(I=\mu*1\)

当\(x\)不为\(square-free~number\)时,设\(x=p_1p_2....p_k\):

\[\mu*1=\sum\limits_{d|x}^{}\mu(d)=\sum\limits_{i=1}^{k}\sum\limits_{k个里面选i个的乘积c}\mu(c)\\ =\sum\limits_{i=1}^{k}\begin{pmatrix}k\\i\end{pmatrix}(-1)^i=(1-1)^k=[k==0]=I(x) \]

\[其中\\ \sum\limits_{i=1}^{k}\begin{pmatrix}k\\i\end{pmatrix}(-1)^i=(1-1)^k\\ 使用了二项式定理\\ (x+y)^k=\sum\limits_{i=0}^{k}\begin{pmatrix}k\\i\end{pmatrix}x^{k-i}y^i \]

莫比乌斯变换&反演

变换:设数论函数\(f\),称\(F=f*1\) 为莫比乌斯变换

反演:设数论函数\(F\),称\(f=F*\mu\)为莫比乌斯反演

线性筛

埃氏筛法

\(O(n\log\log n)\)

bool no[maxn];
int prime[maxn],tot;
for(int i=2;i<=n;i++){
    if(no[i]) continue;
    prime[++tot]=i;
    for(int e=i+i;e<=n;e+=i) no[e]=1;
}

线性筛

\(O(n)\)

保证每个数只被其最小质因子筛去

bool no[maxn];
int prime[maxn],top;
for(int i=2;i<=n;i++){
   if(!no[i]) prime[++tot]=i;
    for(int e=1;e<=top&&prime[e]*i<=n;i++){
        no[prime[e]*i]=1;
        if(i%prime[e]==0) break;
	}
}
线性筛的用处

筛出某些积性函数在\(1\)~\(n\)的所有取值

基本思路:

在第二个循环时,若i%prime[e]!=0,则易得\(f(i*prime[e])=f(i)f(prime[e])\)

i%prime[e]==0,设\(prime[e]\)在\(i\)中的指数为\(k\),易得\(f(i*prime[e])=\frac{f(prime[e]^{k+1})}{f(prime[e]^k)}f(i)\)。

当然,要注意\(f(prime[e]^k)!=0\),如果等于\(0\),也可以这样\(f(i*prime[e])=f(\frac{i}{prime[e]^k})f(prime[e]^{k+1})\)

例一

有一数论函数:

\(f(1)=1\)

\(f(P^k)=P\)^\(k\) (P代表质数)

\(f(xy)=f(x)f(y),gcd(x,y)=1\)

求出\(f(n)\)

这个直接动用一下上面的思路即可

例二——线筛欧拉函数

首先欧拉函数有以下性质

  1. \(\phi(xy)=\phi(x)\phi(y),gcd(x,y)=1\)
  2. \(p|x,\phi(p\times x)=p\times \phi(x)\) \(\to\) \(\frac{\phi(k^{a+1})}{\phi(k^a)}=k\)
  3. \(\phi(prime)=prime-1\)

CODE

int prime[maxn],top,phi[maxn];
bool no[maxn];
inline void oula(){
    phi[1]=1;
    for(int i=2;i<=n;i++){
        if(!no[i]) prime[++top]=1,phi[i]=i-1;
        for(int e=1;e<=top&&prime[e]*i<=n;e++){
			no[prime[e]*i]=1;
            if(i%prime[e]==0){
                phi[i*prime[e]]=phi[e]*phi[i];
            	break;
            }
            phi[i*prime[e]]=phi[i]*phi[prime[e]];
        }
    }
}
例三——线筛莫比乌斯函数
  1. 积性
  2. 函数定义
  3. \(\frac{\mu(k^{a+1})}{\mu(k^a)}=0\)

CODE

int prime[maxn],top,mu[maxn];
bool no[maxn];
inline void oula(){
    mu[1]=1;
    for(int i=2;i<=n;i++){
        if(!no[i]) prime[++top]=1,mu[i]=-1;
        for(int e=1;e<=top&&prime[e]*i<=n;e++){
			no[prime[e]*i]=1;
            if(i%prime[e]==0){
                mu[i*prime[e]]=0;//因子有平方数
            	break;
            }
            mu[i*prime[e]]=mu[i]*mu[prime[e]];
        }
    }
}

例四——求出约数个数

在\(O(n)\)时间内求出函数\(\tau\)在\(1\)~\(n\)的所有取值

注:$\tau(n) \(指\)n$的因数个数

这里可以发现:

  1. \(\gcd(a,b)=1,\tau(ab)=\tau(a)\tau(b)\)
  2. \(\tau(prime)=2\)
  3. \(x=p_1^{k_1}p_2^{k_2}p_3^{k_3}....p_n^{k_n},\tau(x)=(k_1+1)(k_2+1)...(k_n+1)\)

CDOE

for(int i = 2; i <= n; i++){
	if(isp[i] == 0) {pr[++cnt] = i; tau[i] = 2; g[i] = 2;}
		for(int j = 1; j <= cnt && pr[j] * i <= n; j++){
		isp[i * pr[j]] = 1;
		if(i % pr[j] == 0) {
			tau[i * pr[j]] = (g[i] + 1) * tau[i] / g[i];
			g[i * pr[j]] = g[i] + 1;
			break;
		}
		tau[i * pr[j]] = tau[i] * 2;
		g[i * pr[j]] = 2;
	}
}

整数分块

例——求\(\sum\limits_{i=1}^{i=n}\llcorner \frac{n}{i}\lrcorner\)

这个东东只有\(\sqrt n\) 种取值,直接分块计算即可

练习

标签:prime,mu,函数,limits,数论,sum,初步,积性
来源: https://www.cnblogs.com/LQX-OI/p/16530999.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有