我好水。。。。。。
仔细一看这题更水。。。。。。
众所周知:
欧拉函数(x)=
(p(1)-1)(p(2)-1)(p(3)-1)… …(p(k)-1)
这不就好了吗?
上代码
#include <bits/stdc++.h>
using namespace std;
int fi(int n){//一次性函数
int r=n;
for(int i=2;i<=n/i;i++){
if(n%i==0){//只有n%i=0才会进
while(n%i==0){//一次性消除全部i
n/=i;//等于n=n/i
}
r=r/i*(i-1);//计数
}
}
if(n>1) r=r/n*(n-1);//有没有遗漏
return r;
}
int main(){
int n;
cin>>n;
while(n--){
int x;
cin>>x;
cout<<fi(x)<<endl;
}
}