欧拉函数的值 通式:Euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。Euler(1)=1(唯一和1互质的数(小于等于1)就是1本身)。 (注意:每种质因数只一个。比如12=2*2*3那么Euler(12)=12*(1-1/2)*(1-1/3)=4;
Eg :
Euler(12) = 4,与12互质的数有1 5 7 11,所以Euler(12) = 4
具体代码实现:
///欧拉公式的延伸:一个数的所有质因子之和是euler(n)*n/2 int Euler(int m) { int ret = m; for(int i=2; i*i<=m; i++) { if(m%i == 0) ret -= ret/i; while(m%i == 0) m /= i; } if(m > 1) ret -= ret/m; return ret; }