873. 欧拉函数
题目链接https://www.acwing.com/problem/content/875/
题目:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int p[1000000];
int cnt;
void solve(int a){
for(int i=2;i<=a/i;i++){
if(a%i==0) p[cnt++]=i;
while(a%i==0){
a/=i;
}
}
if(a>1) p[cnt++]=a;
}
int main(){
int n;
cin>>n;
while(n--){
int a;
cin>>a;
memset(p,0,sizeof p);
cnt=0;
solve(a);
long long res=a;
for(int i=0;i<cnt;i++ ){
res=res*(p[i]-1)/p[i];
}
printf("%lld\n",res);
}
return 0;
}