POJ 1284 Primitive Roots 解题报告(欧拉函数)
2014-04-22 09:03
447 查看
Primitive Roots
Description
We say that integer x, 0 < x < p, is a primitive root modulo odd prime p if and only if the set { (xi mod p) | 1 <= i <= p-1 } is equal to { 1, ..., p-1 }. For example, the consecutive powers of 3 modulo 7 are 3, 2, 6, 4, 5, 1, and thus 3 is a primitive
root modulo 7.
Write a program which given any odd prime 3 <= p < 65536 outputs the number of primitive roots modulo p.
Input
Each line of the input contains an odd prime numbers p. Input is terminated by the end-of-file seperator.
Output
For each p, print a single number that gives the number of primitive roots in a single line.
Sample Input
Sample Output
解题报告:求一个奇素数的原根。原根的概率数论里说过,简单来说一个数原根的数量就是phi(phi(n))。
素数n的欧拉函数为n-1,所以本题直接求phi(n-1)即可。代码如下:
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 2714 | Accepted: 1532 |
We say that integer x, 0 < x < p, is a primitive root modulo odd prime p if and only if the set { (xi mod p) | 1 <= i <= p-1 } is equal to { 1, ..., p-1 }. For example, the consecutive powers of 3 modulo 7 are 3, 2, 6, 4, 5, 1, and thus 3 is a primitive
root modulo 7.
Write a program which given any odd prime 3 <= p < 65536 outputs the number of primitive roots modulo p.
Input
Each line of the input contains an odd prime numbers p. Input is terminated by the end-of-file seperator.
Output
For each p, print a single number that gives the number of primitive roots in a single line.
Sample Input
23 31 79
Sample Output
10 8 24
解题报告:求一个奇素数的原根。原根的概率数论里说过,简单来说一个数原根的数量就是phi(phi(n))。
素数n的欧拉函数为n-1,所以本题直接求phi(n-1)即可。代码如下:
#include <cmath> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int epi(int n) { int m=(int)(sqrt(n+0.0)+0.5); int phi=n; for(int i=2;i<=m;i++) if(n%i==0) { phi=phi*(i-1)/i; while(n%i==0) n/=i; } if(n>1) phi=phi*(n-1)/n; return phi; } int main() { int n; while(~scanf("%d", &n)) printf("%d\n", epi(n-1)); }
相关文章推荐
- POJ-1284-Primitive Roots 解题报告
- POJ 1284 Primitive Roots【欧拉函数】
- 【POJ1284】Primitive Roots 欧拉函数
- POJ1284:Primitive Roots(欧拉函数的应用,奇素数的原根)
- POJ 1284 : Primitive Roots - 欧拉函数,原根
- POJ 2480 Longge's problem 解题报告(欧拉函数 + 积性函数)
- poj1284 Primitive Roots(原根,欧拉函数)
- poj 1284 Primitive Roots(欧拉函数,原根定理)
- POJ 3358 Period of an Infinite Binary Expansion 解题报告(欧拉函数+因式分解)
- POJ1284_Primitive Roots【欧拉函数】
- poj 1284 Primitive Roots(数论:欧拉函数)
- 【poj1284-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 欧拉函数模板题
- (Relax 数论1.8)POJ 1284 Primitive Roots(欧拉函数的应用: 以n为模的本原根的个数phi(n-1))
- POJ 1284-Primitive Roots(欧拉函数求原根个数)