CodeForces - 1295D Same GCDs (欧拉函数,GCD性质)

🎲 🎲 🎲

![在这里插入图片描述]( https://imgconvert.csdnimg.cn/aHR0cHM6Ly9pbWFnZXMuY25ibG9ncy5jb20vY25ibG9nc19jb20vSGVybG8vMTYxMjIwOC9vXzIwMDIxMzA5NDE0Njg4MzU3NzREMzlCRjgyMjE1NUQxODZBRDc2RjA1QkVCLnBuZw?x-oss-process=image/format ,png)

inline ll eular(ll n)
{
    ll ans=n;
    for(int i=2; 1ll*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;
}
ll gcd(ll a,ll b){ return b==0?a : gcd(b,a%b);}
signed main()
{
    int T;cin>>T;
    while(T--)
    {
        ll a,m;
        cin>>a>>m;
        cout<<eular(m/gcd(m,a))<<endl;
    }
    return 0;
}
posted @ 2020-02-14 10:16  Herlo  阅读(235)  评论(0)    收藏  举报