void init()
{
int i,i1;
memset(vis,0,sizeof(vis));
memset(mu,0,sizeof(mu));
phi[1]=1;
mu[1]=1;
top=0;
for(i=2;1000000>=i;i++)
{
if(vis[i]==0)
{
p[top++]=i;
phi[i]=i-1;
mu[i]=-1;
}
for(i1=0;top>i1&&1000000>=p[i1]*i;i1++)
{
vis[i*p[i1]]=1;
if(i%p[i1]!=0)
{
phi[i*p[i1]]=phi[i]*(p[i1]-1);
mu[i*p[i1]]=-mu[i];
}
else
{
phi[i*p[i1]]=phi[i]*p[i1];
mu[i*p[i1]]=0;
break;
}
}
}
}