浅谈欧拉函数 By cellur925

Posted nopartyfoucaodong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈欧拉函数 By cellur925相关的知识,希望对你有一定的参考价值。

1.某神犇Blog 学了三遍的 欧拉函数φ--DEADFISH7

2.我要做一些补充o(* ̄▽ ̄*)o

  $φ(1)=1$;

  公式有两种形式,一种有太多除法,实际可能会慢些。通用技术分享图片

  对于任意$n$>1,1~$n$中与$n$互质的数之和等于$n*φ(n)/2$。

  是积性函数。

  $sigma(d|n) φ(d)=n$。

代码实现

1°:朴素的质因数分解顺便求出

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

适用于单个查询的情况,但是效率有点低,$O(sqrt(n))$,嘤。

2°:线性筛素数,顺便把欧拉函数也整出来。(适用于递推,连续1~n)

在线性筛板子上稍加修改即可,复杂度$O(n)$。

void init_phi()
{
    phi[1]=1;
    for(int i=2;i<=lim;i++)
    {
        if(v[i]==0)
        {
            prime[++m]=i;
            v[i]=i;
            phi[i]=i-1;
        }
        for(int j=1;j<=m;j++)
        {
            if(prime[j]>v[i]||prime[j]>lim/i) break;
            v[i*prime[j]]=prime[j];
            phi[i*prime[j]]=phi[i]*(i%prime[j] ? prime[j]-1 :prime[j]);
        }
    }
}

例题 仪仗队

以上是关于浅谈欧拉函数 By cellur925的主要内容,如果未能解决你的问题,请参考以下文章

浅谈线段树 (例题:[USACO08FEB]酒店Hotel)By cellur925

序列/树上差分小结 By cellur925

强连通分量初探 By cellur925

USACO Training 3.3 商店购物 By cellur925

数学补天 By cellur925

Luogu P4889 kls与flag 思维/排序By cellur925