省选模板_简单数学
目录:
1.线性筛
1.线性筛
//线性筛(欧拉函数,莫比乌斯函数)
namespace get_prime{
int tot;
int prime[maxn],is[maxn];
int mu[maxn],phi[maxn];
void get_prime(){
mu[1]=1;
phi[1]=1;
for(int i=2;i<maxn;++i){
if(!is[i]) {
prime[++tot]=i;
phi[i]=i-1;
mu[i]=-1;
}
for(int j=1;j<=cnt&&prime[j]*i<maxn;++j){
is[prime[j]*i]=1;
if(i%prime[j]!=0) {
phi[i*prime[j]]=phi[i]*(prime[j]-1);
mu[i*prime[j]]=-mu[i];
}
else {
phi[i*prime[j]]=prime[j]*phi[i];
mu[i*prime[j]]=0;
break;
}
}
}
}
};