题目
给定n个正整数ai,请你求出每个数的欧拉函数。
欧拉函数的定义
输入格式
第一行包含整数n。接下来n行,每行包含一个正整数ai。
输出格式
输出共n行,每行输出一个正整数ai的欧拉函数。
数据范围
1≤n≤100,1≤ai≤2∗
输入样例
3
3
6
8
输出样例
2
2
4
代码
#include<bits/stdc++.h>
using namespace std;
int euler(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);
}
return res;
}
int main()
{
int n;
cin>>n;
while(n--)
{
int x;
cin>>x;
cout<<euler(x)<<endl;
}
}