定义
在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler’s totient function),它又称为Euler’s totient function、φ函数、欧拉商数等。
函数式
其中 pi p i 为 x x 的质因数
φ(x) φ ( x ) 为 1→x 1 → x 与x互质数的个数
性质
1. 对于任意一个质数 p p ,
因为 n n 为质数,与他互质的个数就是 n-1
2. 当 时,
φ(nm)=φ(n)φ(m)
φ
(
n
m
)
=
φ
(
n
)
φ
(
m
)
因为
φ(n)
φ
(
n
)
是积性函数。 积性函数
指对于所有互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数。
3. 若
n=pk
n
=
p
k
其中p为质数,则
φ(n)=pk−pk−1=(p−1)pk−1
φ
(
n
)
=
p
k
−
p
k
−
1
=
(
p
−
1
)
p
k
−
1
1→n
1
→
n
中除了p的倍数,都与
pk
p
k
互质,
1→n
1
→
n
中
p
p
倍数的个数为
4.
n=pk11pk22…pkm−1m−1pkmm
n
=
p
1
k
1
p
2
k
2
…
p
m
−
1
k
m
−
1
p
m
k
m
其中
pkmm
p
m
k
m
为
n
n
所分解的质因数(为每个质因数的个数) ,则
φ(n)=n∏i=1m(1−1pi)
φ
(
n
)
=
n
∏
i
=
1
m
(
1
−
1
p
i
)
由性质3可得
φ(n)=∏i=1n(pi−1)pki−1i(pi|n)=(pk11pk22pk33…pkmm)∏i=1m(1−1pi)=n∏i=1m(1−1pi)
φ
(
n
)
=
∏
i
=
1
n
(
p
i
−
1
)
p
i
k
i
−
1
(
p
i
|
n
)
=
(
p
1
k
1
p
2
k
2
p
3
k
3
…
p
m
k
m
)
∏
i
=
1
m
(
1
−
1
p
i
)
=
n
∏
i
=
1
m
(
1
−
1
p
i
)
5. 所有小于
n
n
与互质个数的和
sum=n×φ(n)2
s
u
m
=
n
×
φ
(
n
)
2
首先证明
gcd(n,i)=1
g
c
d
(
n
,
i
)
=
1
,则
gcd(n,n−i)=1
g
c
d
(
n
,
n
−
i
)
=
1
利用反证法:
设存在
gcd(n,i)=1,gcd(n,n−i)=k
g
c
d
(
n
,
i
)
=
1
,
g
c
d
(
n
,
n
−
i
)
=
k
,那么可得
(n−i)%k=0,n%k=0
(
n
−
i
)
%
k
=
0
,
n
%
k
=
0
,所以
i%k=0
i
%
k
=
0
,即
gcd(n,i)=k
g
c
d
(
n
,
i
)
=
k
与假设矛盾,所以
gcd(n,i)=1
g
c
d
(
n
,
i
)
=
1
,则
gcd(n,n−i)=1
g
c
d
(
n
,
n
−
i
)
=
1
成立
由这个式子可得每个与
n
n
互质的数都是成对的,因为 ,
i
i
和成对,这样就可证明5性质
6. 如果
i
i
mod =0,其中
p
p
为质数,则 ,否则
φ(i∗p)=(p−1)φ(i)
φ
(
i
∗
p
)
=
(
p
−
1
)
φ
(
i
)
对于前半部分,我们只需证明 如果
gcd(i,n)=1
g
c
d
(
i
,
n
)
=
1
则
gcd(i,n+i)=1
g
c
d
(
i
,
n
+
i
)
=
1
同上反证法:
设
gcd(i,n)=1,gcd(i,n+i)=k
g
c
d
(
i
,
n
)
=
1
,
g
c
d
(
i
,
n
+
i
)
=
k
设
n+i=ka1,i=ka2
n
+
i
=
k
a
1
,
i
=
k
a
2
,则
ka2+n=ka1,n=(a1−a2)k
k
a
2
+
n
=
k
a
1
,
n
=
(
a
1
−
a
2
)
k
,所以
gcd(i,n)>=k
g
c
d
(
i
,
n
)
>=
k
,与假设矛盾,
gcd(i,n)=1
g
c
d
(
i
,
n
)
=
1
,则
gcd(i,n+i)=1
g
c
d
(
i
,
n
+
i
)
=
1
成立
有了上面那个式子就好证明了,因为 p为质数,所以与
i∗p
i
∗
p
互质的数也就是
1→(i∗p)
1
→
(
i
∗
p
)
与
i
i
互质的数的个数,这样就可以用上面那个定理了,设是小于
i
i
且与互质的数,则
gcd(i,n)=1
g
c
d
(
i
,
n
)
=
1
则
gcd(i,n+i)=gcd(i,n+2i)=gcd(i,n+3i)=⋯=gcd(i,n+(p−1)i)
g
c
d
(
i
,
n
+
i
)
=
g
c
d
(
i
,
n
+
2
i
)
=
g
c
d
(
i
,
n
+
3
i
)
=
⋯
=
g
c
d
(
i
,
n
+
(
p
−
1
)
i
)
也就是原来的
p
p
陪
后半部分更好证明,与
p
p
互质,那就是性质2
7.
(d|n)
(
d
|
n
)
指n是d的倍数
正规的推导看不懂,在搜了很多博客后看到了一种简单的证明方法
1n,2n,3n,4n,…,nn
1
n
,
2
n
,
3
n
,
4
n
,
…
,
n
n
一共n个分数,把所有数化简到最简分数,则每个分母都是n的因子,也就是说n 是所有分母的倍数,每个分母存在的数量就是
φ(i)
φ
(
i
)
所有
φ(i)
φ
(
i
)
的和也就是所有数的个数
n
n
8. 欧拉定理:对于互质的整数a,m,有 (mod m)。
证明
设小于
n
n
且与互质的集合
Z
Z
, 则
设集合
Y={a∗p1 mod m,a∗p2 mod m… a∗pφ(m}
Y
=
{
a
∗
p
1
m
o
d
m
,
a
∗
p
2
m
o
d
m
…
a
∗
p
φ
(
m
}
我们只需证明
Y=Z
Y
=
Z
即可
因为
a
a
与互质,
pi
p
i
与
n
n
互质,所以 与
n
n
互质,所以
若
i != j
i
!
=
j
那么
a∗pi mod n != a∗pj mod n
a
∗
p
i
m
o
d
n
!
=
a
∗
p
j
m
o
d
n
一如既往的反证法:
设
a∗pi mod n = a∗pj mod n
a
∗
p
i
m
o
d
n
=
a
∗
p
j
m
o
d
n
,
a∗pi=ki∗n+b
a
∗
p
i
=
k
i
∗
n
+
b
,那么
a∗pi−a∗pj=ki∗n+b−kj∗n−b化简得a(pi−pj)=n(ki−kj) 进而得n=pi−pjki−kja
a
∗
p
i
−
a
∗
p
j
=
k
i
∗
n
+
b
−
k
j
∗
n
−
b
化
简
得
a
(
p
i
−
p
j
)
=
n
(
k
i
−
k
j
)
进
而
得
n
=
p
i
−
p
j
k
i
−
k
j
a
,这与
a n
a
n
互质矛盾,所以
i != j
i
!
=
j
那么
a∗pi mod n != a∗pj mod n
a
∗
p
i
m
o
d
n
!
=
a
∗
p
j
m
o
d
n
成立
因此我们可得
Z=Y
Z
=
Y
所以我们可以列出
a∗p1∗a∗p2∗⋯∗a∗pφ(n)≡p1∗p2∗⋯∗pφ(n)( mod n)→aφ(n)≡1 ( mod n)
a
∗
p
1
∗
a
∗
p
2
∗
⋯
∗
a
∗
p
φ
(
n
)
≡
p
1
∗
p
2
∗
⋯
∗
p
φ
(
n
)
(
m
o
d
n
)
→
a
φ
(
n
)
≡
1
(
m
o
d
n
)
费马小定理就是他的一种情况
a与p
a
与
p
互质时
ap−1≡1 ( mod p)
a
p
−
1
≡
1
(
m
o
d
p
)
,这时候
φ(p)=p−1
φ
(
p
)
=
p
−
1
带进去这个性质便可得
欧拉函数求法
应用
欧拉筛质数
板子 线性筛法中的p[]就是
欧拉降幂
公式
Ak≡Ak%φ(m)(mod m)gcd(A,m)=1
A
k
≡
A
k
%
φ
(
m
)
(
m
o
d
m
)
g
c
d
(
A
,
m
)
=
1
Ak≡Ak(mod m)gcd(A,m)!=1,k<φ(m)
A
k
≡
A
k
(
m
o
d
m
)
g
c
d
(
A
,
m
)
!
=
1
,
k
<
φ
(
m
)
Ak≡Ak%φ(m)+φ(m)(mod m)gcd(A,m)!=1,k>φ(m)
A
k
≡
A
k
%
φ
(
m
)
+
φ
(
m
)
(
m
o
d
m
)
g
c
d
(
A
,
m
)
!
=
1
,
k
>
φ
(
m
)
证明见:https://blog.csdn.net/weixin_38686780/article/details/81272848
看不懂,只好背公式,数学还是太垃圾了
因为
φ(n)
φ
(
n
)
是积性函数。 积性函数
指对于所有互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数。
1→n 1 → n 中除了p的倍数,都与 pk p k 互质, 1→n 1 → n 中 p p 倍数的个数为
由性质3可得
首先证明
gcd(n,i)=1
g
c
d
(
n
,
i
)
=
1
,则
gcd(n,n−i)=1
g
c
d
(
n
,
n
−
i
)
=
1
利用反证法:
设存在
gcd(n,i)=1,gcd(n,n−i)=k
g
c
d
(
n
,
i
)
=
1
,
g
c
d
(
n
,
n
−
i
)
=
k
,那么可得
(n−i)%k=0,n%k=0
(
n
−
i
)
%
k
=
0
,
n
%
k
=
0
,所以
i%k=0
i
%
k
=
0
,即
gcd(n,i)=k
g
c
d
(
n
,
i
)
=
k
与假设矛盾,所以
gcd(n,i)=1
g
c
d
(
n
,
i
)
=
1
,则
gcd(n,n−i)=1
g
c
d
(
n
,
n
−
i
)
=
1
成立
由这个式子可得每个与
n
n
互质的数都是成对的,因为 ,
i
i
和成对,这样就可证明5性质
对于前半部分,我们只需证明 如果
gcd(i,n)=1
g
c
d
(
i
,
n
)
=
1
则
gcd(i,n+i)=1
g
c
d
(
i
,
n
+
i
)
=
1
同上反证法:
设
gcd(i,n)=1,gcd(i,n+i)=k
g
c
d
(
i
,
n
)
=
1
,
g
c
d
(
i
,
n
+
i
)
=
k
设
n+i=ka1,i=ka2
n
+
i
=
k
a
1
,
i
=
k
a
2
,则
ka2+n=ka1,n=(a1−a2)k
k
a
2
+
n
=
k
a
1
,
n
=
(
a
1
−
a
2
)
k
,所以
gcd(i,n)>=k
g
c
d
(
i
,
n
)
>=
k
,与假设矛盾,
gcd(i,n)=1
g
c
d
(
i
,
n
)
=
1
,则
gcd(i,n+i)=1
g
c
d
(
i
,
n
+
i
)
=
1
成立
有了上面那个式子就好证明了,因为 p为质数,所以与
i∗p
i
∗
p
互质的数也就是
1→(i∗p)
1
→
(
i
∗
p
)
与
i
i
互质的数的个数,这样就可以用上面那个定理了,设是小于
i
i
且与互质的数,则
gcd(i,n)=1
g
c
d
(
i
,
n
)
=
1
则
gcd(i,n+i)=gcd(i,n+2i)=gcd(i,n+3i)=⋯=gcd(i,n+(p−1)i)
g
c
d
(
i
,
n
+
i
)
=
g
c
d
(
i
,
n
+
2
i
)
=
g
c
d
(
i
,
n
+
3
i
)
=
⋯
=
g
c
d
(
i
,
n
+
(
p
−
1
)
i
)
也就是原来的
p
p
陪
后半部分更好证明,与
p
p
互质,那就是性质2
正规的推导看不懂,在搜了很多博客后看到了一种简单的证明方法
1n,2n,3n,4n,…,nn 1 n , 2 n , 3 n , 4 n , … , n n
一共n个分数,把所有数化简到最简分数,则每个分母都是n的因子,也就是说n 是所有分母的倍数,每个分母存在的数量就是 φ(i) φ ( i ) 所有 φ(i) φ ( i ) 的和也就是所有数的个数 n n
8. 欧拉定理:对于互质的整数a,m,有 (mod m)。
证明
设小于
n
n
且与互质的集合
Z
Z
, 则
设集合
Y={a∗p1 mod m,a∗p2 mod m… a∗pφ(m}
Y
=
{
a
∗
p
1
m
o
d
m
,
a
∗
p
2
m
o
d
m
…
a
∗
p
φ
(
m
}
我们只需证明
Y=Z
Y
=
Z
即可
因为
a
a
与互质,
pi
p
i
与
n
n
互质,所以 与
n
n
互质,所以
若
i != j
i
!
=
j
那么
a∗pi mod n != a∗pj mod n
a
∗
p
i
m
o
d
n
!
=
a
∗
p
j
m
o
d
n
一如既往的反证法:
设
a∗pi mod n = a∗pj mod n
a
∗
p
i
m
o
d
n
=
a
∗
p
j
m
o
d
n
,
a∗pi=ki∗n+b
a
∗
p
i
=
k
i
∗
n
+
b
,那么
a∗pi−a∗pj=ki∗n+b−kj∗n−b化简得a(pi−pj)=n(ki−kj) 进而得n=pi−pjki−kja
a
∗
p
i
−
a
∗
p
j
=
k
i
∗
n
+
b
−
k
j
∗
n
−
b
化
简
得
a
(
p
i
−
p
j
)
=
n
(
k
i
−
k
j
)
进
而
得
n
=
p
i
−
p
j
k
i
−
k
j
a
,这与
a n
a
n
互质矛盾,所以
i != j
i
!
=
j
那么
a∗pi mod n != a∗pj mod n
a
∗
p
i
m
o
d
n
!
=
a
∗
p
j
m
o
d
n
成立
因此我们可得
Z=Y
Z
=
Y
所以我们可以列出
a∗p1∗a∗p2∗⋯∗a∗pφ(n)≡p1∗p2∗⋯∗pφ(n)( mod n)→aφ(n)≡1 ( mod n)
a
∗
p
1
∗
a
∗
p
2
∗
⋯
∗
a
∗
p
φ
(
n
)
≡
p
1
∗
p
2
∗
⋯
∗
p
φ
(
n
)
(
m
o
d
n
)
→
a
φ
(
n
)
≡
1
(
m
o
d
n
)
费马小定理就是他的一种情况
a与p
a
与
p
互质时
ap−1≡1 ( mod p)
a
p
−
1
≡
1
(
m
o
d
p
)
,这时候
φ(p)=p−1
φ
(
p
)
=
p
−
1
带进去这个性质便可得
欧拉函数求法
应用
欧拉筛质数
板子 线性筛法中的p[]就是
欧拉降幂
公式
Ak≡Ak%φ(m)(mod m)gcd(A,m)=1
A
k
≡
A
k
%
φ
(
m
)
(
m
o
d
m
)
g
c
d
(
A
,
m
)
=
1
Ak≡Ak(mod m)gcd(A,m)!=1,k<φ(m)
A
k
≡
A
k
(
m
o
d
m
)
g
c
d
(
A
,
m
)
!
=
1
,
k
<
φ
(
m
)
Ak≡Ak%φ(m)+φ(m)(mod m)gcd(A,m)!=1,k>φ(m)
A
k
≡
A
k
%
φ
(
m
)
+
φ
(
m
)
(
m
o
d
m
)
g
c
d
(
A
,
m
)
!
=
1
,
k
>
φ
(
m
)
证明见:https://blog.csdn.net/weixin_38686780/article/details/81272848
看不懂,只好背公式,数学还是太垃圾了
证明
设小于
n
n
且与互质的集合
Z
Z
, 则
设集合
Y={a∗p1 mod m,a∗p2 mod m… a∗pφ(m}
Y
=
{
a
∗
p
1
m
o
d
m
,
a
∗
p
2
m
o
d
m
…
a
∗
p
φ
(
m
}
我们只需证明
Y=Z
Y
=
Z
即可
因为
a
a
与互质,
pi
p
i
与
n
n
互质,所以 与
n
n
互质,所以
若
i != j
i
!
=
j
那么
a∗pi mod n != a∗pj mod n
a
∗
p
i
m
o
d
n
!
=
a
∗
p
j
m
o
d
n
一如既往的反证法:
设
a∗pi mod n = a∗pj mod n
a
∗
p
i
m
o
d
n
=
a
∗
p
j
m
o
d
n
,
a∗pi=ki∗n+b
a
∗
p
i
=
k
i
∗
n
+
b
,那么
因此我们可得 Z=Y Z = Y
所以我们可以列出
费马小定理就是他的一种情况 a与p a 与 p 互质时 ap−1≡1 ( mod p) a p − 1 ≡ 1 ( m o d p ) ,这时候 φ(p)=p−1 φ ( p ) = p − 1 带进去这个性质便可得
板子 线性筛法中的p[]就是
公式
Ak≡Ak%φ(m)(mod m)gcd(A,m)=1
A
k
≡
A
k
%
φ
(
m
)
(
m
o
d
m
)
g
c
d
(
A
,
m
)
=
1
Ak≡Ak(mod m)gcd(A,m)!=1,k<φ(m)
A
k
≡
A
k
(
m
o
d
m
)
g
c
d
(
A
,
m
)
!
=
1
,
k
<
φ
(
m
)
Ak≡Ak%φ(m)+φ(m)(mod m)gcd(A,m)!=1,k>φ(m)
A
k
≡
A
k
%
φ
(
m
)
+
φ
(
m
)
(
m
o
d
m
)
g
c
d
(
A
,
m
)
!
=
1
,
k
>
φ
(
m
)
证明见:https://blog.csdn.net/weixin_38686780/article/details/81272848
看不懂,只好背公式,数学还是太垃圾了
板子
O(n)
O
(
n
)
,线性筛法
int p[maxn];
bool vis[maxn];
ll phi[maxn];
int cnt=0;
ll get_phi(int len=maxn){
phi[1]=1;
for(int i=2;i<len;i++){
if(!vis[i]){
p[cnt++]=i;
phi[i]=i-1;
}
for(int j=0;j<cnt;j++){
if(p[j]*i>=len) break;
vis[p[j]*i]=1;
if(i%p[j]==0){
phi[i*p[j]]=p[j]*phi[i];
break;
}
phi[i*p[j]]=phi[i]*(p[j]-1);
}
}
}
O(n−−√) O ( n ) ,适合求单点
ll get_phi(ll x){
ll res=x;
for(int i=2;i*i<=x;i++)
{
if(x%i==0){
res=res-res/i;
while(x%i==0) x/=i;
}
}
if(x!=1) res=res-res/x;
return res;
}
练习
BZOJ 3884 上帝与集合的正确用法 ( O(n−−√) O ( n ) 板子) 题解