想了半天没想出来怎么做、、、搜一下,这、、、有个原根的性质:当模m有原根时,它有φ(φ(m))个原根,好嘛,就这样、、
百度百科原根
#include<stdio.h>
#include<string.h>
int eular(int n)
{
int ans=n;
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
ans-=ans/i;
while(n%i==0)
n/=i;
}
}
if(n>1) ans-=ans/n;
return ans;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
printf("%d\n",eular(n-1));
return 0;
}