@ZCDHJ
2018-09-15T13:49:59.000000Z
字数 532
阅读 504
欧拉函数
对于 ,我们可以知道 。也就是 与 互质。那么,枚举每个最大公因数 ,求一下欧拉函数就行了。注意每次枚举 到 就行了,然后再处理 。
#include <iostream>#include <cmath>#include <cstdio>typedef long long LL;int N;LL Ans;LL Phi(int x){LL res = x;int n = sqrt(x);for(int i = 2; i <= n; ++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(){scanf("%d", &N);int n = sqrt(N);for(int i = 1; i <= n; ++i){if(N % i != 0) continue;Ans += LL(i) * Phi(N / i);if(i * i != N) Ans += LL(N / i) * Phi(i);}printf("%lld\n", Ans);}
