#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N = 1e6 + 10;
int n;
int primes[N],cnt;//存质数,质数个数
int phi[N];//存欧拉函数
bool st[N];//这个数是否被筛选过
LL get_eulers(int n){
phi[1]=1;//1的欧拉函数为1
for(int i=2;i<=n;i++){
if(!st[i]){//没被筛过,说明是质数
primes[cnt++]=i;
phi[i]=i-1;//质数p的欧拉函数是p-1
}
for(int j=0;primes[j]<=n/i;j++){
st[primes[j]*i]=true;
if(i%primes[j]==0)
{
phi[primes[j]*i]=phi[i]*primes[j];
break;
}
phi[primes[j]*i]=phi[i]*(primes[j]-1);pj*(1-1/pj)=pj-1;
}
}
LL res=0;
for(int i=1;i<=n;i++)
res+=phi[i];
return res;
}
int main(){
cin>>n;
cout<<get_eulers(n)<<endl;
return 0;
}
01-07
619