一.定义
积性函数:对于任意互质的正整数a和b有性质 (f(ab)=f(a)f(b))的数论函数。
完全积性函数:对于任意正整数a和b有性质(f(ab)=f(a)f(b))的数论函数。
这里还有一个文档,讲得蛮详细的 线性筛积性函数
然后这里还有一个博客列举了很多常用的积性函数博客
2016年国家候选队论文任之洲积性函数求和的几种方法
对于两个算术函数 (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))的筛法预处理出来。
(1(n)) -不变的函数,定义为(1(n)=1)(完全积性)
(id(n)) -单位函数,定义为(id(n)=n)(完全积性)
(varepsilon(n)) -定义为:若(n=1),(varepsilon(n)=1);若(n>1),(varepsilon(n)=0)。别称为“对于狄利克雷卷积的乘法单位”(完全积性)
(sigma_{k}(n)) - (n)的所有正因子的(k)次幂之和
(sigma(n)) - (n)的所有质因子之和((sigma_{1}(n)))
(d(n)) - (n)的正因子个数((sigma_{0}(n)))
因为 (sum_{d|n}mu(d)=[n=1]) ,所以 (1*mu=varepsilon)(由前者证明后者)
因为 (sum_{d|n}varphi(d)=n) ,所以 (1*varphi=id)(由前者证明后者)
还有一点,莫比乌斯函数与欧拉函数之间的转化 $$idmu=1varphimu=varepsilonvarphi=varphi$$
二.线性筛法
(一)线性筛素数
设(n=p*m=p^prime*m^prime),其中(n)维合数,(p)为(n)的最小质因子。那么,$ p<p^prime ( 并且 ) m^prime<m $, (p|m^prime) 所以在筛到(m^prime)的时候,内维的(j)循环还没有到(p^prime)就会被(p)给break掉,在到(m)的时候,(j)到(p)后就会筛掉(n),所以这样就保证了每一个数之后被它最小的质因子筛掉。
例如,在筛24的时候, $ 24 = 3 * 8 = 2 * 12 $ ,那么它就只会被(2 * 12)筛掉
For (i,2,n) {
if (!vis[i]) p[++N]=i;
For (j,1,N) {
if (i*p[j]>n) break;
vis[i*p[j]]=1;
if (i%p[j]==0) break;
}
}
(二)欧拉函数
1.性质
-
(1) (varphi(n))表示(1..n)中与(n)互质的数的个数
-
(2) (varphi(n))为积性函数
-
(3) (varphi(p^{k})=p^{k}-p^{k-1}=(p-1)*p^{k-1})
-
(4) 欧拉定理:(a^{varphi(n)}equiv 1 pmod{n}) 其中((a,n)=1)
-
(5) (sum_{d|n}varphi(d)=n)
-
(6) (n>1)时,(1..n)中与(n)互质的整数之和为(frac{nvarphi(n)}{2})
2.线性筛欧拉函数
具体的东西上面那个文档讲得很详细,这里只是补充几点
需要用到的性质
(1) (p) 为质数时 (varphi(p)=p-1)
(2) 若 (n=p*m) 其中 (p) 为 (n) 的最小质因子,如果 (p|m) 那么 (varphi(n)=p*varphi(m))
(3) 若 (n=p*m) 其中 (p) 为 (n) 的最小质因子,如果 (p ot| m) 那么 (varphi(n)=varphi(p)*varphi(m)=(p-1)*varphi(m))
这一点根据积性函数性质可以得到
phi[1]=1;
For (i,2,n) {
if (!vis[i]) {
p[++N]=i;
phi[i]=i-1;
}
For (j,1,N) {
if (i*p[j]>n) break;
vis[i*p[j]]=1;
if (i%p[j]==0) {
phi[i*p[j]]=p[j]*phi[i];
break;
}
else
phi[i*p[j]]=(p[j]-1)*phi[i];
}
}
(三)莫比乌斯函数
1.性质
- 设 (n=p_{1}^{k_{1}}*p_{2}^{k_{2}}*...*p_{m}^{k_{m}}),其中 (p) 为素数,那么
-
莫比乌斯函数是积性函数,即(mu(a)mu(b)=mu(a cdot b))
-
(sum_{d|n} mu(d)=[n=1]) ,这一点根据二项式定理即可证明
2.线性筛莫比乌斯函数
需要用到的性质
根据 (mu) 的性质可以得到,如果 (n=p*m) ,其中 (p) 为 (n) 的质因子,如果 (p|m) 那么显然 (mu(n)=0) ,否则 (mu(n)=-mu(m))
miu[1]=1;
For (i,2,n) {
if (!vis[i]) {
p[++N]=i;
miu[i]=-1;
}
For (j,1,N) {
if (i*p[j]>n) break;
vis[i*p[j]]=1;
if (i%p[j]==0) {
miu[i*p[j]]=0;
break;
}
else
miu[i*p[j]]=-miu[i];
}
}
(四)约数个数(d(n))
如果 (d(n)) 为 (n) 的约数个数,那么
设 (nm=p_{1}^{x_{1}}*...*p_{k}^{x_{k}}),且 (n=p_{1}^{y_{1}}*...*p_{k}^{y_{k}}),那么 (m=p_{1}^{x_{1}-y_{1}}*...*p_{k}^{x_{k}-y_{k}})
设 (i=p_{1}^{a_{1}}*...*p_{k}^{a_{k}}),(j=p_{1}^{b_{1}}*...*p_{k}^{b_{k}})
要使得 (gcd(i,j)=1) 必须要 (a_{i}) 或者 (b_{i}) 等于 (0),如果 (a_{i}) 等于 (0),那么 (b_{i}) 共有 (x_{i}-y_{i}+1) 种选择,如果 (b_{i}) 等于(0),那么 (a_{i}) 共有 (y_{i}+1) 种选择,总共 (x_{i}+1) 种,所以满足条件的(i,j)的个数为(prod(x_{i}+1))
(五)奇葩函数
1.(f(n)=sum_{d|n}dmu(d))
f[1]=1;
For (i,2,maxx) {
if (!vis[i]) {
p[++N]=i; f[i]=1-i;
}
For (j,1,N) {
int k=i*p[j];
if (k>maxx) break;
vis[k]=1;
if (i%p[j]==0) {
f[k]=f[i]; break;
}
else f[k]=f[i]*(1-p[j]);
}
}