1.​​题目链接​​。原根的一个性。当a的阶等于phi(m)的时候,说明a是m的一个原根。首先这里原根的存在性是不用判断的,因为奇素数一定存在原根。当a是原根时,a^0,a^1,a^2....a^(odr(a))构成了一个关于m的简化剩余系。简单点就是说这个集合和{1,2,...odr(a)}这个集合相等。又因为m时质数,所以phi(m)=m-1。所以这个得到的简化剩余系就是{1,2,...m-1},只要是原根都满足,不是原根都不满足(充要条件),等价于求原根的数量。phi(phi(m)).

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#pragma warning(disable:4996)
ll getphi(ll n)
{
ll ans = n;
for (int i = 2; i*i <= n; i++)
{
if (n%i == 0)
{
ans -= ans / i;
while (n%i == 0)n /= i;
}
}
if (n > 1)ans -= ans/n;
return ans;
}
int main()
{
ll n;
while (~scanf("%lld", &n))
{
printf("%lld\n", getphi(getphi(n)));
}
}