POJ2407 欧拉函数入门裸题 xingxing在努力
题意直接求和n互质的数的个数, 直接上代码
#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; int euler_phi(int n) { int m = (int)sqrt(n+0.5); int ans = n; for(int i=2; i<=m; i++) if(n%i==0) { ans = ans/i * (i-1); while(n%i == 0) n/=i; } if(n>1) ans = ans/n*(n-1); return ans; } int main() { int n; while(scanf("%d", &n) == 1 && n) { printf("%d\n", euler_phi(n)); } return 0; }

浙公网安备 33010602011771号