欧拉函数版子

欧拉函数版子;
//直接求解欧拉函数  
LL euler(LL n)
{ //返回euler(n)   
       LL res=n,a=n;  
       for(LL i=2;i*i<=a;i++){  
           if(a%i==0){  
               res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出   
               while(a%i==0) a/=i;  
           }  
       }  
      if(a>1) res=res/a*(a-1);  
      return res;  
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务