欧拉函数

欧拉函数

公式:

通项公式:

其中p1,p2,p3,…,pn为x的所有质因数,x为不为0的整数

递推式:

证明:

由容斥原理,先用n减去p1,p2,…,pn的倍数的个数,即

但此时多减了同时为两之积的数,因此又要加上同为两个质因子的倍数的个数,但此时多减了同时为两之积的数,因此又要加上同为两个质因子的倍数的个数但此时多减了同时为两之积的数,因此又要加上同为两个质因子的倍数的个数,但此时多减了同时为两p之积的数,因此又要加上同为两个质因子的倍数的个数,即

再加上同为三个质因子的倍数的个数……最终公式化为以下形式

此式与上式等价

性质:

  1. 积性函数:若m,n为互质,
  1. 当n为奇数时
  1. 若n为质数

代码:

依赖于:

1
2
3
4
5
6
7
for(int i=1;i<=n;i++)e[i]=i;
for(int i=2;i<=n;i++){
if(e[i]==i)//当e[i]为质数
for(int j=i;j<=n;j+=i){
e[j]=e[j]/i*(i-1);//使其倍数均对于此数做操作,同时筛掉合数
}
}

e[i]即为$\varphi(i)$