筛法求欧拉函数板子
欧拉函数:phi[n]:[1,n]与n互质(gcd=1)的数的个数
欧拉函数性质:
1.若n为质数,则phi[n]=n-1
2.若n为质数,则phi[nk]=(n-1)(n(k-1))
3.积性函数:phi[nxm]=phi[n]xphi[m]
以下为O(n)复杂度求欧拉函数板子
vector<int>prime;
int vis[maxn];
int phi[maxn];
void get_phi(int n){
phi[1]=1;
for(int i=2;i<=n;i++){
if(!vis[i]){
prime.pb(i);
phi[i]=i-1;
}
for(int j=0;i*prime[j]<=n;j++){
int m=i*prime[j];
vis[m]=1;
if(i%prime[j]==0){
phi[m]=prime[j]*phi[i];
//i能被prime[j]整除
break;
}
else{
phi[m]=(prime[j]-1)*phi[i];
//i不能被prime[j]整除
}
}
}
}

浙公网安备 33010602011771号