我们需要将N分解质因数,
我们需要将n中p1,p2,,,,pk的所有倍数,剩下的数全部与N互质,然后我们需要计算剩下数的个数
这里需要使用容斥原理了,具体的请自行查询,总之最后就变成了如下:
下面的res=res*(1-1/i);由于我们的计算不能有小数出现,转化成 res=res/i*(1-i);
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N =101010;
int main(){
int n;
cin>>n;
while(n--){
int a;
cin>>a;
int res=a;
for(int i=2;i<=a/i;i++)
if(a%i==0){
res=res/i*(i-1);
while(a%i==0)a/=i;
}
if(a>1)res=res/a*(a-1);
cout<<res<<endl;
}
return 0;
}