输入4,输出-52,结果AC
#include<cstdio>
using namespace std;
long long n,cnt=0,i,j,sum;
int main(){
scanf("%lld",&n);
long long f[n+1],z[n+1];
bool x[n+1];
for(i=1;i<=n;i++){
x[i]=0;f[i]=i;
}
x[1]=1;
for(i=2;i<=n;i++){
if(!x[i]){
z[++cnt]=i;
for(j=1;j*z[cnt]<=n;j++){
x[j*z[cnt]]=1;
f[j*z[cnt]]=f[j*z[cnt]]/z[cnt]*(z[cnt]-1);
}
}
}
// for(i=1;i<=cnt;i++){
// printf("%lld ",z[i]);
// }
sum=cnt;
for(i=2;i<=n;i++){
while(z[cnt]*i>n)cnt--;
sum+=f[i]*cnt*2;
}
printf("%lld",sum);
return 0;
}
//41 457