这题思路清晰就好了.
最大公约数即为因子,我们把n的因子求出来即可,然后根据欧拉的定理即是答案了.
我们知道求gcd(1a,n)=i.就等同于gcd(1a/i,n/i)=1.
然后就是统计答案了.
代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e3;
ll ys[N];
inline ll get_phi(ll x)//得到x的欧拉函数.
{
    ll cnt=x;
    for(ll i=2;i*i<=x;i++)
    {
        if(x%i==0)
        {
            while(x%i==0) x/=i;
            cnt=cnt/i*(i-1);
        }
    }
    if(x>1)
    {
        cnt=cnt/x*(x-1);
    }
    return cnt;
}

int main()
{
    ll n,cnt=0,ans=0;
    cin>>n;
    for(ll i=1;i*i<=n;i++)
    {
        if(n%i==0)  {ys[cnt++]=i;if(i==n/i) continue;ys[cnt++]=n/i;}
    }
    for(ll i=0;i<cnt;i++)
    {
        ans+=ys[i]*get_phi(n/ys[i]);
    }
    cout<<ans<<endl;
    return 0;
}