码迷,mamicode.com
首页 > 其他好文 > 详细

欧拉函数

时间:2018-08-28 23:45:15      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:一个   line   公式   for   函数   条件   欧拉函数   因子   ret   

方法一:应用公式

一个trick是for循环的条件不断改变,同时保证最多只有一个n的素因子不会被for遍历到。这样大大降低了复杂度(\(O(\sqrt{n})\))。

int phi(int n)
{
    int ret=n;
    for(int i=2;i<int(sqrt(n))+1;++i)
    {
        if(n%i==0)ret=ret/i*(i-1);
        while(n%i==0)n/=i;
    }
    if(n>1)ret=ret/n*(n-1);
    return ret;
}

--最后修改于:2018/08/28--

欧拉函数

标签:一个   line   公式   for   函数   条件   欧拉函数   因子   ret   

原文地址:https://www.cnblogs.com/maoruimas/p/9551383.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!