原根的求法。
代码:
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
int a[65537];
int n;
void read(){
// ifstream cin("in.txt");
int i,j,k,ans,n;
for(i=4;i<=65536;i+=2)
a[i]=1;
for(i=3;i<=65536;i+=2)
if(a[i]==0)
for(j=2*i;j<=65536;j+=2)
a[j]=1;
while(cin>>n){
n--;ans=1;
for(i=2;i<=n&&n!=1;i++)
if(a[i]==0&&n%i==0)
{
j=0;
while(n%i==0)
{
j++;
n=n/i;
}
ans*=pow(1.*i,j-1);
ans*=i-1;
}
cout<<ans<<endl;
}
}
int main(){
read();
return 0;
}