若p为奇素数,则p有euler(euler(p))个原根,详见《初等数论及其应用》249页
int get_euler(int n) {
int res = n, a = n;
for (int i = 2; i*i <= a; i++) {
if (a%i == 0) {
res = res / i * (i - 1);
while (a%i == 0)a = a / i;
}
}
if (a > 1)res = res / a * (a - 1);
return res;
}
int main() {
int n;
while (cin >> n) {
cout << get_euler(get_euler(n)) << "\n";
}
return 0;
}