欧拉函数是计算在1-n中n的质因数的个数;
φ(x)=x*(p1-1)/p1*(p2-1)/p2*(p3-1)/p3…*(pn-1)/pn
其中p1,p2,p3…是x的质因数;
若x是质数: φ(x)=x-1
若x是质数p的k次幂(即x=p^k):φ(x)=p^k-p^(k-1)=(p-1)p^(k-1)
积性:
φ(n*m)=φ(n)*φ(m)
其中m、n互质。
具体的证明和其他介绍就不多说了=.=
下面开始介绍算法。
暴力求一个欧拉值
嗯,没错很暴力。
用公式:φ(x)=x*(p1-1)/p1*(p2-1)/p2*(p3-1)/p3…*(pn-1)/pn
暴力枚举质因数,不具体说了,看代码喽:
int euler(int x){
int res=x;
for(int i=2;i*i<=x;++i){
if(