欧拉函数
定义
φ ( n ) \varphi(n) φ(n),对于一个正整数 n,小于 n 且和 n 互质的正整数(包括 1)的个数
φ ( n ) = n ∏ ( 1 − 1 p i ) \varphi(n) = n\prod (1-\frac{1}{p_i}) φ(n)=n∏(1−pi1) 其中 p i p_i pi为 n 的所有质因数,n 是不为 0 的整数; φ ( 1 ) \varphi(1) φ(1)=1,唯一和 1 互质的数就是 1 本身.
- 解释:
- 对于 n 的一个质因数 p i p_i pi,在 n 以内 p i p_i pi的倍数均匀分布
- n 以内有 1 p i \frac{1}{p_i} pi1个数是 p i p_i pi的倍数,则有 1 − 1 p i 1 - \frac{1}{p_i} 1−pi1个数不是 p i p_i pi的倍数;
- 同理,对于质因数 p j p_j pj,则有 1 − 1 p j 1 - \frac{1}{p_j} 1−pj1个数不是 p j p_j pj的倍数,则有 ( 1 − 1 p i ) ( 1 − 1 p j ) (1 - \frac{1}{p_i})(1 - \frac{1}{p_j}) (1−pi1)(1−pj1)个数即不是 p i p_i pi,也不是 p j p_j pj的倍数
- 最后有 n ∏ ( 1 − 1 p i ) n\prod (1-\frac{1}{p_i}) n∏(1−pi1)个数与 n 互质
- 例:
φ ( 10 ) = 10 ( 1 − 1 2 ) ( 1 − 1 5 ) \varphi(10) = 10(1 - \frac{1}{2})(1 - \frac{1}{5} ) φ(10)=10(1−21)(1−51) = 4; (1,3,7,9)
φ ( 30 ) = 30 ( 1 − 1 2 ) ( 1 − 1 3 ) ( 1 − 1 5 ) \varphi(30) = 30(1 - \frac{1}{2})(1 - \frac{1}{3} )(1 - \frac{1}{5} ) φ(30)=30(1−21)(1−31)(1−51) = 8;
φ ( 49 ) = 49 ( 1 − 1 7 ) \varphi(49)= 49(1 - \frac{1}{7} ) φ(49)=49(1−71) = 42;
程序
- 单数求法
ll eular(ll n){
ll ans = n;
for(int i = 2; i*i <= n; ++i){
if(n % i == 0){
//对应欧拉函数的通式即 ans = ans(1- 1/i)
ans -= ans/i;
//为保证完全消除刚才得到的 i 因子,确保下一个得到的 i 是 n 的素因子.
while(n % i == 0){
n /= i;
}
}
}
//为保证已经除完了 n 的所有的素因子;因为有可能还会出现一个未除的因子,若结尾出现 n>1,说明还剩一个素因子未除.
if(n > 1){
ans -= ans/n;
}
return ans;
}
- 欧拉打表
void phi(){
p[1]=1;
for(int i=2;i<maxn;i++){
if(!p[i]){
for(int j=i;j<=maxn;j+=i){
if(!p[j]){
p[j]=j;
}
p[j]=p[j]/i*(i-1);
}
}
}
}
性质:
-
若 p 是素数,则
$\varphi(p) = p-1$
-
对于任意两个素数 p,q,有 φ ( p q ) = p q − 1 \varphi( pq ) = pq - 1 φ(pq)=pq−1
-
对于正整数 n,若 n = p 1 q 1 + p 2 q 2 + ⋯ + p n q n n = p_1^{q_1} + p_2^{q_2} + \cdots + p_n^{q_n} n=p1q1+p2q2+⋯+pnqn 且 p 1 p_1 p1 p 2 p_2 p2 ⋯ \cdots ⋯ p n p_n pn 为 n 的所有素因子
则有 φ ( n ) = n ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) ⋯ ( 1 − 1 p n ) \varphi(n) = n(1 - \frac{1}{p_1})(1 - \frac{1}{p_2})\cdots(1 - \frac{1}{p_n}) φ(n)=n(1−p11)(1−p21)⋯(1−pn1)
-
若 n = p k n = p^k n=pk (p 为质数) , 则有
$\varphi(n) = (p-1)p^{k-1}$
-
欧拉定理: 对于互质的 m,n,有 n φ ( m ) n^{\varphi(m)} nφ(m) ≡ 1 (mod m)
-
费马小定理: 对于质数 p
若 n mod m = 0 , 则 φ ( n × p ) = φ ( n ) × p \varphi(n \times p) = \varphi(n) \times p φ(n×p)=φ(n)×p
若 n mod m ≠ \ne = 0 , 则 φ ( n × p ) = φ ( n ) × ( p − 1 ) \varphi(n \times p) = \varphi(n) \times (p-1) φ(n×p)=φ(n)×(p−1) -
小于 n 且与 n 互质的数的和
S = n × φ ( n ) 2 S = n \times \frac{\varphi(n)}{2} S=n×2φ(n)