For each n, the answer is (Phi[2]+phi[3]+...+phi[n]) *2+1, a simple Euler function application.
#include <iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<cmath>#include<map>#include<Set>#include<list>#include<deque>#include<vector>#include<algorithm>#include<stack>#include<queue>#include<cctype>#include<sstream>using namespacestd;#definePII pair<int,int>#defineLL Long Long intConst Doubleeps=1e-Ten;Const intinf=1000000000;Const intmaxn=50000+Ten;intN,PHI[MAXN];intMain () {//freopen ("In2.txt", "R", stdin);Memset (PHI,0,sizeof(PHI)); for(intI=2; i<maxn;i++) { if(phi[i]==0) { for(intj=i;j<maxn;j+=i) {if(phi[j]==0) phi[j]=J; PHI[J]=phi[j]/i* (I-1); } } } while(SCANF ("%d", &n) = =1&&N) {LL ans=1; for(intI=2; i<=n;i++) { //cout<<i<< '-' <<phi[i]<<endl;ans+= (LL) phi[i]*2; } cout<<ans<<Endl; } return 0;}
Uva 10820 Send a Table (Euler function)