欧拉函数
定义:
公式证明:容质原理
Example
给定n个正整数aiai,请你求出每个数的欧拉函数。
欧拉函数的定义
第一行包含整数n。
接下来n行,每行包含一个正整数aiai。
输出格式
输出共n行,每行输出一个正整数aiai的欧拉函数。
数据范围
1≤n≤1001≤n≤100,
1≤ai≤2∗1091≤ai≤2∗109
输入样例:
3
3
6
8
输出样例:
2
2
4
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
while (n --)
{
int a;
cin >> a;
int res = a;//答案用res表示
//分解质因数
for (int i = 2; i <= a / i; i ++)
if (a % i == 0)
{
res = res / i * (i - 1);//等价于i*(1-1/i)
while (a % i == 0) a /= i;
}
if (a > 1) res = res / a*(a - 1);//如果还没除完,再除一次
cout << res << endl;
}
return 0;
}