原根:
原根定义:设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。
性质:定理1:如果p有原根,则它恰有φ(φ§)个不同的原根(无论p是否为素数都适用)
POJ1284
题目大意:求一个奇素数的原根的个数,直接通过性质1求解φ(φ§)=φ(p-1)
#include<iostream>
#include<cstdio>
using namespace std;
int visit[100010];
int phi(int n){
int ans=n;
for(int i=2;i*i<=n;i++){
if(n%i==0){
while(n%i==0){
n/=i;
}
ans=ans-ans/i;
}
}
if(n>1) ans=ans-ans/n;
return ans;
}
int main()
{
int a;
while(cin>>a&&a){
cout<<phi(a-1)<<endl;
}
}