欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)
f(x) = x(1-1/p1)(1-1/p2)….(1-1/pn)
p1..pn表示x的质因数
模板代码:
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstdio>
#include<cstring>
#define CLR(a,b) memset(a,b,sizeof b)
#define inf 0x3f3f3f3f
#define maxx(a,b) a>b?a:b
using namespace std;
typedef long long ll;
int Euler(int n){
if(n==1)
return 1;
int res = n;
for(int i = 2; i*i <= n;i++){
if(n%i==0){
res = res/i*(i-1);
while (n%i==0) {
n/=i;
}
}
}
if(n>1) res = res/n*(n-1);
return res;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
int res = Euler(n);
printf("%d\n",res);
}
return 0;
}