//============================================================================
// Name : poj2407.cpp
// Author : ssslpk
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include<cstdio>
using namespace std;
#define int64 long long
#define N 1000010
int64 fun[1000002]={0};
int64 isprime[N]={0};
int64 cnt,pri[N]={0};
void prime()
{
int64 i,j;
cnt = 0;
for(i=0;i<N;i++)fun[i]=i,isprime[i]=1;
isprime[0] = isprime[1] =0;
for(i=2;i<N;i++)
if(isprime[i])
{
pri[cnt++] = i;
for(j=2;i*j<N;++j)
isprime[j*i]=0;
}
for(i=2;i<N;i++)
if(isprime[i])
{
for(j=i;j<N ;j+=i)
fun[j]=fun[j]/i*(i-1);
}
}
int main() {
prime();
int64 sum=0;
for(int64 i=2;i<=1000000;i++)
sum+=fun[i],fun[i]=sum;
int64 a;
while(scanf("%lld",&a),a)
{
printf("%lld\n",fun[a]);
}
return 0;
}
int64 eular(int64 x)//原函数
{
int64 cnt=1,i;
for(i=2;i*i<=x;i++)
{
if(x%i==0)
{
x/=i,cnt*=i-1; //f[x]=x-1
while(x%i==0)x/=i,cnt*=i; //f[x*y]=f[x]*f[y]
}
}
if(x>1)cnt*=x-1;
return cnt;
}