neuler(m) 是从1,到m与m互质的数字的个数
n定理
long long euler(long long n)
{
long long i,m=(int)sqrt(n+0.5),ans=n;
for(int i=2;i<=m;i++)
{
if(n%i==0)ans=ans/i*(i-1);
while(n%i==0)n/=i;
}
if(n)ans=ans/n*(n-1);
return ans;
}
{
long long i,m=(int)sqrt(n+0.5),ans=n;
for(int i=2;i<=m;i++)
{
if(n%i==0)ans=ans/i*(i-1);
while(n%i==0)n/=i;
}
if(n)ans=ans/n*(n-1);
return ans;
}