欧拉函数
首先 p h i ( n ) phi(n) phi(n)即为欧拉函数 φ ( n ) \varphi(n) φ(n)
对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目( φ ( 1 ) = 1 φ(1)=1 φ(1)=1)。例如 φ ( 8 ) = 4 φ(8)=4 φ(8)=4,因为 1 1 1, 3 3 3, 5 5 5, 7 7 7均和 8 8 8互质。
欧拉函数公式: φ ( x ) = x ∗ ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) … … ( 1 − 1 p n ) \varphi(x) = x*(1-\frac{1}{p_{1}})(1-\frac{1}{p_{2}})……(1-\frac{1}{p_{n}}) φ(x)=x∗(1−p11)(1−p21)……(1−pn1), p i p_{i} pi为 x x x的质因数。
性质:
欧拉数在
n
>
2
n>2
n>2时,必定为偶数
质数x的欧拉数为
x
−
1
x-1
x−1
[
φ
(
7
)
=
6
,
φ
(
5
)
=
4
,
φ
(
3
)
=
2
]
[\varphi(7) = 6 ,\varphi(5) = 4, \varphi(3) = 2]
[φ(7)=6,φ(5)=4,φ(3)=2]
对于质数p有:
- φ ( p ) = p − 1 \varphi(p)=p-1 φ(p)=p−1,因为对于质数 p p p在 1 − p 1-p 1−p只有 p p p与本身不互质
- 如果 i % p = 0 i\%p=0 i%p=0, p h i ( i ∗ p ) = p h i ( i ) ∗ p phi(i*p)=phi(i)*p phi(i∗p)=phi(i)∗p
- 如果 i % p = ̸ 0 i\%p=\not0 i%p≠0, p h i ( i ∗ p ) = p h i ( i ) ∗ ( p − 1 ) phi(i*p)=phi(i)*(p-1) phi(i∗p)=phi(i)∗(p−1)。这里好像是积性函数?
欧拉函数一个美妙的性质: ∑ d ∣ n φ ( d ) = n \sum_{d|n}\varphi{(d)}=n ∑d∣nφ(d)=n,写成卷积形式为 φ ∗ I = N \varphi*I=N φ∗I=N
小于n且与n互质的数的和 ∑ i = 1 n − 1 i [ g c d ( i , n ) = 1 ] = n φ ( n ) + [ n = 1 ] 2 \displaystyle\sum_{i=1}^{n-1}i[gcd(i,n)=1]=\cfrac{n\varphi(n)+[n=1]}{2} i=1∑n−1i[gcd(i,n)=1]=2nφ(n)+[n=1]
公式法
int euler(int n){
int res = n,a = n;
for(int i = 2; i*i <= a; i++){
if(a%i == 0){
res = res/i*(i-1);
while(a%i == 0){
a /= i;
}
}
}
if(a > 1) res=res/a*(a-1);
return res;
}
打表
int euler[maxn];
void Euler(){
euler[1] =1;
for(int i = 2; i < maxn; i++){
euler[i] = i;
}
for(int i = 2; i < maxn; i++){
if(euler[i] == i){
for(int j = i; j < maxn; j += i){
euler[j] = euler[j]/i*(i-1);
}
}
}
}
欧拉筛法(线性筛)
int prime[1000100];
bool vis[maxn+10];
int phi[maxn+10];
int tot = 0;
void Euler(){
me(prime,0);
me(vis,true);
me(phi,0);
phi[1] = 1;
for(int i = 2; i <= maxn; ++i){
if(vis[i]) prime[++tot] = i,phi[i] = i-1;
for(int j = 1; j <= tot && i*prime[j] <= maxn; ++j){
vis[i*prime[j]] = false;
if(i%prime[j] == 0){
phi[i*prime[j]] = phi[i]*prime[j];
break;
}
else{
phi[i*prime[j]] = phi[i]*phi[prime[j]];
}
}
}
}
欧拉定理
在数论中,欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若n,a为正整数,且n,a互质,则: a p h i ( n ) ≡ 1 ( m o d n ) a^{phi(n)}\equiv1(mod\ n) aphi(n)≡1(mod n). p h i ( n ) phi(n) phi(n)是 n n n的欧拉函数的值。
费马小定理
假如 p p p是质数,且 g c d ( a , p ) = 1 gcd(a,p)=1 gcd(a,p)=1,那么 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1(mod\ p) ap−1≡1(mod p)。即:假如 a a a是整数, p p p是质数,且 a a a, p p p互质(即两者只有一个公约数 1 1 1),那么 a a a的 p − 1 p-1 p−1次方除以 p p p的余数恒等于 1 1 1。
注意:费马小定理是欧拉定理的特例,因为 p p p是质数, p p p的欧拉函数值为 p − 1 p-1 p−1。
拓展欧拉定理
将欧拉定理 a p h i ( n ) ≡ 1 ( m o d n ) a^{phi(n)}\equiv1(mod\ n) aphi(n)≡1(mod n)扩展到不互质的情况
a c ≡ { a c % p h i ( n ) gcd(a,n)=1 a c gcd(a,n) = ̸ 1,c < phi(n) a ( c % p h i ( n ) + p h i ( n ) ) gcd(a,n) = ̸ 1,c ≥ phi(n) a^{c}\equiv \begin{cases} a^{c\%phi(n)}& \text{gcd(a,n)=1}\\ a^{c}& \text{gcd(a,n)$=\not$1,c$<$phi(n)}\\ a^{(c\%phi(n)+phi(n))}& \text{gcd(a,n)$=\not$1,c$\geq$phi(n)} \end{cases} ac≡⎩⎪⎨⎪⎧ac%phi(n)aca(c%phi(n)+phi(n))gcd(a,n)=1gcd(a,n)≠1,c<phi(n)gcd(a,n)≠1,c≥phi(n)