POJ(POJ我真的无力吐槽,从来就没有AC过)
int n,m,ans;
int v[40005],prime[40005],phi[40005];
void get_phi(){//模板
for(int i=2;i<=40005;i++){
if(v[i]==0){
v[i]=i;prime[++m]=i;
phi[i]=i-1;
}
for(int j=1;j<=m;j++){
int cnt=prime[j]*i;
if(prime[j]>v[i]||cnt>40005)break;
v[cnt]=prime[j];
if(i%prime[j])phi[cnt]=phi[i]*(prime[j]-1);
else phi[cnt]=phi[i]*prime[j];
}
}
}
int main(){
get_phi();
n=read();
if(n==0||n==1){puts("0");return 0;}//特判
for(int i=2;i<n;i++)ans+=phi[i];
ans*=2;ans+=3;
printf("%d\n",ans);
return 0;
}
原文:https://www.cnblogs.com/PPXppx/p/10461030.html