原根概念:设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数)
本题需应用的结论:若p是一个素数,则p有φ(p-1)个原根。
#include <iostream>
using namespace std;
const int maxn =10000+5;
int ph(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;
}
int main(){
int n;
while(cin>>n){
cout<<ph(n-1)<<endl;
}
return 0;
}