欧拉函数(模板)

欧拉函数:

设oula(i)为i对应的欧拉函数值,那么oula(i)=i*(1-1/p1)*(1-1/p2)*(1-1/p3)*……*(1-1/pn)(这是定理,我们也不需要去推导了。。大师推出来的结果比我们准确得多,会用就行)

其中,p1,p2,p3,……,pn为i的素因子,就是将i素因子分解之后得到的所有因子。


那么,得出代码:

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


posted @ 2016-01-18 17:16  martinue  阅读(132)  评论(0编辑  收藏  举报