要注意边界啊我。。。QAQ,这玩意儿n可以等于1的,血的教训。。
#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
using namespace std;
const int N=40100;
typedef long long ll;
int n,phi[N],v[N],prime[N],len;
ll ans;
inline void Euler(){
rep(i,2,n){
if(v[i]==0){
v[i]=i;
phi[i]=i-1;
prime[++len]=i;
}
rep(j,1,len){
if(prime[j]>n/i||prime[j]>v[i]) break;
v[i*prime[j]]=prime[j];
if(i%prime[j]==0) phi[i*prime[j]]=phi[i]*prime[j];
else phi[i*prime[j]]=phi[i]*(prime[j]-1);
}
}
}
int main(){
cin>>n; n--;//坐标从(0,0)算起
Euler();
rep(i,2,n) ans+=phi[i];
cout<<ans*2+(n==0?0:3);
return 0;
}