欧拉函数
欧拉函数
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int eulor(int m){
int res = m;
for (int i = 2; i <= m / i; i ++){
if (m % i == 0){
while (m % i == 0)
m /= i;
res = res / i * (i - 1); // 先/后×,避免乘法溢出
}
}
if ( m > 1) res = res / m * (m - 1);
return res;
}
int main(){
int n; cin >> n;
while (n -- ){
int m; cin >> m;
cout << eulor(m) << endl;
}
}最后更新于