欧拉函数主要是用来算互质数个数的。
公式就是结论:ϕ(N)表示1 N中与N互质的数的个数结论:ϕ(N)表示1 N中与N互质的数的个数
N=p1a1×p2a2×……×p2a2N=p1a1×p2a2×……×p2a2
ϕ(N)=N(1−1p1)(1−1p2)……(1−1pn)ϕ(N)=N(1−1p1)(1−1p2)……(1−1pn)
=∏ni=1piai=∏i=1npiai
求一个数的复杂度:求一个数的复杂度:n√

题目

#include<iostream>
using namespace std;
int n;
int main()
{
   
    cin>>n;
    while(n--)
    {
   
        int x;
        cin>>x;
        long long ans=x;
        for(int i=2;i<=x/i;i++)
        {
   
            if(x%i==0)
            {
   
                while(x%i==0)
                {
   
                    x/=i;
                }
                ans=ans*(i-1)/i;
            }
        }
        if(x>1) ans=ans*(x-1)/x;
        printf("%lld\n",ans);
    }
    return 0;
}