欧拉函数
给定 n 个正整数 a,请你求出每个数的欧拉函数。
欧拉函数的定义
1 ~ N 中与 N 互质的数的个数被称为欧拉函数,记为 ϕ(N)。
若在算数基本定理中,N=p1a1p2a2…pmam,则:
ϕ(N) = N∗(p1−1/p1)∗(p2−1/p2)∗…∗(pm−1/pm)
输入格式
第一行包含整数 n。
接下来 n 行,每行包含一个正整数 a。
输出格式
输出共 n 行,每行输出一个正整数 a 的欧拉函数。
数据范围
1 ≤ n ≤ 100
1 ≤ a ≤ 2∗109
输入样例:
3
3
6
8
输出样例:
2
2
4
代码如下:
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
while(n -- ){
int a;
cin >> a;
long long res = a;
for(int i = 2; i <= a / i; i++){
if(a % i == 0){
res *= i - 1;
res /= i;
while(a % i == 0) a /= i;
}
}
if(a > 1){
res *= (a - 1);
res /= a;
}
cout << res << endl;
}
}