欧拉函数
单个欧拉函数:
线性筛:
杜教筛:
莫比乌斯函数
单个莫比乌斯函数:
线性筛:
前缀和:
除了使用线性筛之后进行统计,还可以使用杜教筛。
杜教筛:
因数个数函数\(d(n)\)
线性筛:
前缀和:
一次分块就可以求出来,比杜教筛还快,要什么杜教筛?
ll d(int n){
ll ret=0;
for(int l=1,r;l<=n;l=r+1){
r=n/(n/l);
ret+=(r-l+1)*(n/l);
}
return ret;
}
除数函数\(\sigma _{x}(n)\)
积性。
n的所有因子的x次方和。
\(\sigma _{0}(n)\) 0阶的除数函数就是 \(d(n)\)
其他遇到过的奇怪组合
\(id(n)*d(n)\)
非积性,因为这个是乘法不是卷积。
只讨论前缀和,类似\(d(n)\),每次贡献的式子带个公差罢了。
int sum(int a1,int an,int n){
return (a1+an)*n/2;
}
ll id_d(int n){
ll ret=0;
for(int l=1,r;l<=n;l=r+1){
r=n/(n/l);
ret+=sum(1,n/l,n/l)*sum(l,r,r-l+1);
}
return ret;
}