1.欧拉函数的定义
欧拉函数,又称为
φ
φ
。表示比n小的和n互质的数的个数。
举个栗子:
φ(8)=4
φ
(
8
)
=
4
,因为1,3,5,7与8互质。
2.欧拉函数的通式及证明
欧拉函数有一个通式,即为:
φ(n)=n∗(1−1p1)∗(1−1p2)∗……∗(1−1pr)
φ
(
n
)
=
n
∗
(
1
−
1
p
1
)
∗
(
1
−
1
p
2
)
∗
…
…
∗
(
1
−
1
p
r
)
(p1…pr为n的所有质因子)。
证明:
首先:
其次:
由于1,
由于2,
化简得:
那么就得证了。
还有一个比较重要的性质:与n互质的小于n的数之和是 n∗φ(n)2 n ∗ φ ( n ) 2 。
3.欧拉函数的模板
单个求解欧拉函数
int eurlar(int x){
int ret=x;
for (int i=2;i<=sqrt(x)&&x>1;i++)
if (x%i==0) {ret=ret/i*(i-1); while (x%i==0) x/=i;}
if (x>1) ret=ret/x*(x-1);
return ret;
}
4.几个例题:
经典应用:BZOJ2705: [SDOI2012]Longge的问题(题解)
拓展提升:BZOJ3884: 上帝与集合的正确用法
——————————————————————————————
莫名其妙的分割线