#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//Accepted 164K 0MS
int work(int n) {
int rea = n;
for(int i = 2; i*i<=n; i++) {
if(n%i == 0) {
rea = rea - rea/i;
while(n%i==0) { n /= i; }
}
}
if(n>1) { rea = rea - rea/n ;}
return rea;
}
int main()
{
int n;
while(scanf("%d", &n) != EOF) {
int res = work(n-1);
printf("%d\n", res);
}
return 0;
}
///此题用到一个结论:p是素数则有f(n-1)个原根。(f(x)为欧拉函数)
poj1284Primitive Roots(欧拉函数)
最新推荐文章于 2020-07-17 07:59:37 发布