欧拉函数
1.直接求
int euler(int x)
{
int ans=x;
for(int i=2;i*i<=x;++i)
{
if(x%i==0) ans=ans/i*(i-1);
while(x%i==0) x/=i;
}
if(x>1) ans=ans/x*(x-1);
return ans;
}
2.打表(参考[https://blog.csdn.net/oliver233/article/details/70990869])
void Euler()
{
euler[1]=1;
for(int i=2;i<MAX;i++)
euler[i]=i;
for(int i=2;i<MAX;i++)
if(euler[i]==i)
for(int j=i;j<MAX;j+=i)
euler[j]=euler[j]/i*(i-1);
}