欧拉函数板子
bool book[N]; int prime[N],euler[N]; int res; void eratosthenes_sieve() { res=0; memset(book,false,sizeof(book)); for(int i=2;i<maxn;i++) { if(!book[i]) prime[res++]=i,euler[i]=i-1; for(int j=0;j<res&&i*prime[j]<maxn;j++) { if(i%prime[j]==0) { euler[i*prime[j]]=euler[i]*prime[j]; break; } euler[i*prime[j]]=euler[i]*(prime[j]-1); } }