题目
裸欧拉函数
#include<iostream>
#include<cstdio>
using namespace std;
int ans;
int phi[41000];
int prime[41000];
int v[41000];
int n,t;
int main()
{
cin>>n;
phi[1]=phi[0]=1;
for(int i=2;i<n;i++)
{
if(!v[i])
{
phi[i]=i-1;prime[++t]=i;
}
for(int j=1;j<=t;j++)
{
int x=i*prime[j];
if(x>n) break;
v[x]=1;
if(i%prime[j]==0) { phi[x]=phi[i]*prime[j];break;}
else { phi[x]=phi[i]*phi[prime[j]];}
}
}
for(int i=2;i<n;i++)
ans+=phi[i];
if(n!=1)
cout<<2*ans+3;
else cout<<0;
return 0;
}