- 定义
在数论中,对正整数n,欧拉函数phi(n)是小于等于n的正整数中与n互质的数的数目。
- 通式
phi(x)=x(1-1/p1)(1-1/p2)...(1-1/pn),其中,p1,p2...pn为n的质因数。
证明:
将n表示成素数的乘积形式: n=p1^k1*p2^k2...pn^kn,
可得,phi(n)=(p1^k1-p1^(k1-1))...*(pn^kn-pn^(kn-1))
next,phi(n)=n(1-1/p1)(1-1/p2)..(1-1/pn),其中,p1,p2..pn均为素数。
其中,当n=p^k时,1到n中p的倍数与n并不互素,这样的数有n/p个。
- 性质(递推关系)(p为n的质因数)
若n%p==0 && (n/p)%p==0,则phi(n)=phi(n/p)*p;
若n%p==0 && (n/p)%p!=0,则phi(n)=phi(n/p)*(p-1);
- 算法实现
-
1 int p[MAXN],phi[MAXN]; 2 3 void solve(int N) 4 { 5 for(int i=1; i<=N; i++) 6 { 7 p[i] = 1; // 1 for prime number 8 phi[i] = i; 9 } 10 p[1] = 0; 11 for(int i=1; i<=N; i++) 12 { 13 if(p[i]) 14 { 15 for(int j=2*i; j<=N; j+=i) 16 p[j] = 0; 17 } 18 } 19 for(int i=2; i<=N; i++) 20 { 21 if(p[i]) 22 for(int j=i; j<=N; j+=i) 23 phi[j] = phi[j]/i*(i-1); 24 } 25 }
- 应用
欧拉函数的主要应用是欧拉定理以及运用ploya定理时对指数循环节进行优化,有待补充。