POJ 1284 Primitive Roots
2013-01-10 22:30
344 查看
大意原根的求解。
思路:如果P是素数,原根的个数为α(P-1)。
扩展阅读:http://zh.wikipedia.org/wiki/%E5%8E%9F%E6%A0%B9#.E6.80.A7.E8.B4.A8
思路:如果P是素数,原根的个数为α(P-1)。
扩展阅读:http://zh.wikipedia.org/wiki/%E5%8E%9F%E6%A0%B9#.E6.80.A7.E8.B4.A8
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long LL; LL n; LL euler_phi(LL n) { LL m = (int)sqrt(n + 0.5); LL ans = n; for(LL 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; } /*LL euler_phi(LL n) { LL m = (int)sqrt(n + 0.5); LL ans = n; for(LL i = 2; i <= m; i++) if(n % i == 0) { ans = ans - ans/i; while(n % i == 0) n /= i; } if(n > 1) ans = ans - ans / n; return ans; }*/ void solve() { LL ans = euler_phi(n-1); printf("%lld\n", ans); } int main() { while(~scanf("%lld", &n)) { solve(); } return 0; }
相关文章推荐
- POJ 1284-Primitive Roots(欧拉函数求原根个数)
- POJ-1284 Primitive Roots(原根的个数定理)
- poj-1284(Primitive Roots)(欧拉函数运用)
- POJ 1284 Primitive Roots 欧拉函数模板题
- POJ 1284 Primitive Roots 原根
- POJ 1284 Primitive Roots 原根
- poj 1284 Primitive Roots(原根+欧拉函数)
- poj 1284 Primitive Roots (原根)
- POJ1284_Primitive Roots【欧拉函数】
- [POJ1284]Primitive Roots(原根性质的应用)
- POJ 1284 Primitive Roots 原根
- poj 1284 Primitive Roots
- poj 1284 Primitive Roots
- POJ1284:Primitive Roots(欧拉函数的应用,奇素数的原根)
- POJ 1284 Primitive Roots (求原根个数)
- POJ 1284 Primitive Roots
- poj1284 Primitive Roots 原根个数
- POJ1284 Primitive Roots (欧拉函数 & 原根)
- Poj 1284 Primitive Roots
- poj1284 Primitive Roots(原根,欧拉函数)