#include <iostream>
#include <cstdio>
using namespace std;
#define N 32769
int phi[N]={0};
int ok[N]={0};
int prm[N]={0};
int total=0;
void euler(int max)
{
int i,j;
phi[1]=1;
for(i=2;i<=max;i++)
{
if(ok[i]==0)
{
prm[total++]=i;
phi[i]=i-1;
}
for(int j=0;j<total && prm[j]*i<=max;j++)
{
ok[prm[j]*i]=1;
if(i%prm[j]==0)
{
phi[i*prm[j]] = phi[i]*prm[j];
break;
}
else phi[i*prm[j]] = phi[i]*(prm[j]-1);
}
}
}
void init()
{
int test;
scanf("%d",&test);
for(int i=0;i<test;i++)
{
int n;
scanf("%d",&n);
printf("%d\n",phi[n]);
}
return ;
}
int main()
{
euler(N);
init();
return 0;
}
hdu 1286
最新推荐文章于 2017-09-03 19:27:31 发布