mdd的烦恼 NYOJ 333

 1 #include<stdio.h>//mdd的烦恼(333) 
 2 #include<math.h>
 3 int main()
 4 {
 5     long long n,i,res;
 6     while(scanf("%lld",&n)!=EOF){
 7         res=n;
 8         for(i=2;i<=sqrt(n+0.5);i++){              
 9             if(n%i==0){                             
10                 res=res*(i-1)/i;                      
11                 while(n%i==0){                           
12                     n=n/i;
13                 }
14             }
15         }
16         if(n>1)res=res*(n-1)/n;
17         printf("%lld\n",res);
18     }
19     return 0;
20 } 
//求欧拉函数(即n以内所有与n互质的数的个数)
// 设n的质因数分别为p1,p2,.....,pn 
//f(x)=n*(1-p1)*(1-p2)*...*(1-pn)
//求与n互质的数之和S(x)=f(x)/2*x 

 

posted @ 2015-05-29 08:04  minimalism_Geek  阅读(186)  评论(0编辑  收藏  举报