首页 > 其他 > 详细

poj 1284 求原根的个数(欧拉函数的应用)

时间:2015-11-11 16:12:17      阅读:201      评论:0      收藏:0      [点我收藏+]

用到一个结论:如果p是素数,则p有φ(p-1)个原根。然后就是直接求φ函数的值了

技术分享
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <stack>
 5 #include <queue>
 6 #include <map>
 7 #include <algorithm>
 8 #include <vector>
 9 
10 using namespace std;
11 
12 const int maxn = 1000005;
13 
14 typedef long long LL;
15 
16 int main()
17 {
18     int n;
19     while(cin>>n){
20         n--;
21         int res = n;
22         for(int i=2;i*i<=n;i++){
23             if(n%i == 0){
24                 res -= res/i;
25                 n /= i;
26 
27             while(n%i==0) n/=i;
28             }
29         }
30         if( n > 1) res -= res/n;
31         printf("%d\n",res);
32     }
33 
34     return 0;
35 }
View Code

 

poj 1284 求原根的个数(欧拉函数的应用)

原文:http://www.cnblogs.com/lmlyzxiao/p/4956109.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!