const int N=41000;
long long phi[N];
void euler(long long n)
{
for(long long i=2; i<=n; i++)
phi[i]=i;
for(long long i=2; i<=n; i++)
if (phi[i]==i)
for(long long j=i; j<=n; j+=i)
phi[j]=phi[j]/i*(i-1);
}
复杂度:o(nlogn)