#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int N;
int gcd(int a,int b){
if(a<b)swap(a,b);
return b?gcd(b,a%b):a;
}
//欧拉函数
#define maxn 4000001
int phi[maxn];
void getphi(int n){
for(int i=2;i<=n;i++)phi[i]=0;phi[1]=1;
for(int i=2;i<=n;i++)if(!phi[i]){
for(int j=i;j<=n;j+=i){if(!phi[j])phi[j]=j;
phi[j]=phi[j]/i*(i-1);
}
}
}
long long f[maxn];
void getf(int n){
for(int i=1;i<=n;i++){
for(int j=i*2;j<=n;j+=i){
f[j]+=(phi[j/i]*i);
}
}
}
long long s[maxn];
void getS(int n){
s[2]=f[2];
for(int i=3;i<=n;i++){
s[i]=s[i-1]+f[i];
}
}
int main(){
// freopen("in.txt","r",stdin);
getphi(maxn);
memset(f,0,sizeof(f));
getf(maxn);
getS(maxn);
while(scanf("%d",&N)!=EOF&&N){
printf("%lld\n",s[N]);
}
return 0;
}
uva11426
最新推荐文章于 2020-03-03 11:42:19 发布