欧拉定理的证明与模板

证明详细的博客:http://blog.csdn.net/hillgong/article/details/4214327

模板:

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<queue>
 4 #include<cstdio>
 5 #include<cstring>
 6 #define CLR(a,b) memset(a,b,sizeof b)
 7 #define inf 0x3f3f3f3f
 8 #define maxx(a,b) a>b?a:b
 9 using namespace std;
10 typedef long long ll;
11 
12 int Euler(int n){
13     if(n==1)
14         return 1;
15     int res = n;
16     for(int i  = 2;  i*i <= n;i++){
17         if(n%i==0){
18             res = res/i*(i-1);
19             while (n%i==0) {
20                 n/=i;
21             }
22         }
23     }
24     if(n>1) res = res/n*(n-1);
25     return res;
26 }
27 int main(){
28     int t;
29     scanf("%d",&t);
30     while(t--){
31         int n;
32         scanf("%d",&n);
33         int res = Euler(n);
34         printf("%d\n",res);
35     }
36     return 0;
37 }
View Code

模板博客:http://blog.csdn.net/henuwhr/article/details/77448332

       http://blog.csdn.net/yukizzz/article/details/51105009

posted @ 2017-08-21 12:26  euzmin  阅读(650)  评论(0编辑  收藏  举报