作用:1∼x中与 x互质的数的个数被称为欧拉函数。
原理:抽屉原理,算术基本定理
用总数减去所有质因子倍数的数字总数,剩余的数字与x的质因子只会为1,这些数的个数即为互质数的个数
#include<bits/stdc++.h>
using namespace std;
int phi(int x)
{
int res = x;
for(int i=2;i<=x/i;i++)
{
if(x%i==0)
{
res = res / i *(i-1);为了防止溢出 乘法在后
while(x%i==0) x /= i;//将该质因子除尽
}
}
if(x>1) res = res/x * (x-1);//只会存在一个质因子大于根号x,如果满足该条件说明存在该质因子。
return res;
}
int main()
{
int n;
cin>>n;
while(n--)
{
int x;
cin>>x;
cout<<phi(x)<<endl;
}
return 0;
}