关于积性函数的一些理解

首先,要Orz鏼爷。。http://jcvb.is-programmer.com/posts/41846.html

谈谈积性函数吧。。

百度百科的定义:

完全积性函数指所有对于任何a,b都有性质$f(ab)=f(a)f(b)$的函数。
在数论中的积性函数:对于正整数n的一个算术函数$f(n)$,若$f(1)=1$,且当a,b互质时$f(ab)=f(a)f(b)$,在数论上就称它为积性函数。若对于某积性函数$f(n)$,就算a, b不互质,也有$f(ab)=f(a)f(b)$,则称它为完全积性的。
 
以下均是积性函数:(度娘~)
$phi(n)$-欧拉函数
$mu(n)$-莫比乌斯函数,关于非平方数的质因子数目
$gcd(n,k)$-最大公因子,当k固定的情况
$d(n)$-n的正因子数目
$σ(n)$-n的所有正因子之和
$σk(n)$-因子函数,n的所有正因子的k次之和,当中k可为任何复数
$1(n)$-不变的函数,定义为$1(n)=1$(完全积性)
$id(n)$-单位函数,定义为$id(n)=n$(完全积性)
$idk(n)$-幂函数,对于任何复数、实数k,定义为$idk(n)=n^{k}$(完全积性)
$varepsilon(n)$-定义为:若$n=1$,$varepsilon(n)=1$;若$n>1$,$varepsilon(n)=0$。别称为“对于狄利克雷卷积的乘法单位”(完全积性)
$lambda(n)$-刘维尔函数,关于能整除n的质因子的数目
$gamma(n)$,定义为$gamma(n)=(-1)^{omega (n)}$,在此加性函数$omega (n)$是不同能整除n的质数的数目
另外,所有狄利克雷特征均是完全积性的。
 
积性函数有几个性质:
1.若$n=p_{1}^{a_{1}}p_{2}^{a_{2}}p_{3}^{a_{3}}...p_{n}^{a_{n}}$,那么$f(n)=f(p_{1}^{a_{1}})f(p_{2}^{a_{2}})f(p_{3}^{a_{3}})...f(p_{n}^{a_{n}})$。
2.若$f$为积性函数且有$f(p^{n})=f^{n}(p)$,那么$f$为完全积性函数。
 
狄利克雷卷积:
对于两个算术函数$f$和$g$,定义其狄利克雷卷积为$f*g$,其中$f*g(n)=sum_{d|n}f(d)g(frac{n}{d})$。
狄利克雷卷积满足很多性质:
交换律:$f*g=g*f$,
结合律:$(f*g)*h=f*(g*h)$,
逐点加法的分配律:$f*(g+h)=f*g+f*h$。
若$f$,$g$是积性函数,那么$f*g$也是积性函数。
狄利克雷卷积可以用$O(nlogn)$的筛法预处理出来。
 
对于积性函数,还有两个很重要的性质:
$sum_{d|n}mu(d)=[n==1]$,即$1*mu=varepsilon$。
$sum_{d|n}phi(d)=n$,即$1*phi=id$。
 
积性函数可以用$O(n)$的时间线性筛求出,以下是筛素数,$mu(n),phi(n)$的代码:
1 vis[0]=vis[1]=1,mu[1]=1,phi[1]=1;
2 for (RG int i=2;i<=N;++i){
3     if (!vis[i]) mu[i]=-1,phi[i]=i-1,prime[++cnt]=i;
4     for (RG int j=1,k=i*prime[j];j<=cnt && k<=N;++j,k=i*prime[j]){
5     vis[k]=1;
6     if (!(i%prime[j])){ mu[k]=0,phi[k]=phi[i]*prime[j]; break; }
7     else mu[k]=-mu[i],phi[k]=phi[i]*phi[prime[j]];
8     }
9 }

可以发现,线性筛分为3部分:

1.n本身是素数,这个根据积性函数的定义可得,很容易求。

2.i%prime[j]!=0,这个也是根据积性函数的性质可得,即$f(a)f(b)=f(ab)$。

3.i%prime[j]==0,这个就很麻烦了,可能需要找规律。据ljh2000神犇的说法,可以用2,4,8或3,9,27这些数来找。。

总之就是一句话:打表找规律!!!

先打素数,找素数规律,再找2,4,8和3,9,27,找出规律!然后就可以乱搞线性筛了!!!

然后,线性筛并不一定只能筛积性函数,有些具有特殊性质的函数也可以用线性筛。

以上是预备知识,可以为莫比乌斯反演做一些铺垫吧。。

原文地址:https://www.cnblogs.com/wfj2048/p/6537861.html