-
定义
欧拉函数是 小于等于 x的数中与x 互质 的数的 数目
符号 φ ( x ) \varphi(x) φ(x)
互质 两个互质的数的最大公因数等于1,1与任何数互质 -
通式
φ ( x ) = x ∏ i = 1 n ( 1 − 1 p i ) \varphi(x)=x\prod_{i=1}^n(1-\frac{1}{p_i}) φ(x)=x∏i=1n(1−pi1)
其中 p i p_i pi为 x x x的质因子, n n n为 x x x的质因子个数
欧拉函数常用性质
-
若 n n n为质数,显然 φ ( n ) = n − 1 \varphi(n)=n-1 φ(n)=n−1
-
欧拉函数是积性函数
积性函数: 对于任意 互质 的整数 a a a和 b b b有性质 f ( a b ) = f ( a ) ⋅ f ( b ) f(ab)=f(a)·f(b) f(ab)=f(a)⋅f(b)的数论函数。
若 m , n m,n m,n互质, φ ( m n ) = φ ( m ) ⋅ φ ( n ) \varphi(mn)=\varphi(m)·\varphi(n) φ(mn)=φ(m)⋅φ(n) -
如果 x = 2 n x=2n x=2n( n n n为奇数), φ ( x ) = φ ( n ) \varphi(x)=\varphi(n) φ(x)=φ(n) 即 φ ( 2 n ) = φ ( n ) \varphi(2n)=\varphi(n) φ(2n)=φ(n)( n n n为奇数)
n为奇数时,n与2互质, φ ( 2 ) = 1 \varphi(2)=1 φ(2)=1 -
若 p p p为质数,则 φ ( p k ) = p k − p k − 1 \varphi(p^k)=p^k-p^{k-1} φ(pk)=pk−pk−1
因为与 p k p^k pk不互质的只有 p p p的倍数,而 p k p^k pk中 p p p的倍数有 p k − 1 p^{k-1} pk−1个 -
当 x > 2 x>2 x>2时, φ ( x ) \varphi(x) φ(x)为偶数
这一点需要了解更相减损术 即 g c d ( n , x ) = g c d ( n , n − x ) gcd(n,x)=gcd(n,n-x) gcd(n,x)=gcd(n,n−x)
由该公式我们可以知道,所有与 n n n互质的数都是成对出现的 -
小于n的数中,与n互质的数的总和为 φ ( n ) ∗ n / 2 ( n > 1 ) \varphi(n)*n/2\ \ (n>1) φ(n)∗n/2 (n>1)
由上面的证明(更相减损术)我们知道,每一对与 n n n互质的数的和为 n n n,共有 φ ( n ) / 2 \varphi(n)/2 φ(n)/2对 -
n = ∑ d ∣ n φ ( d ) n=\sum_{d|n}\varphi(d) n=∑d∣nφ(d)即 n n n的因数 ( ( (包括 1 1 1和它自己 ) ) )的欧拉函数之和等于 n n n
这条性质的运用又叫 欧拉反演
定义函数
f ( n ) = ∑ d ∣ n φ ( d ) \begin{aligned}f(n)=\sum_{d|n}\varphi(d)\end{aligned} f(n)=d∣n∑φ(d)-
f
(
n
)
f(n)
f(n)为积性函数
f ( n ) ⋅ f ( m ) = ∑ i ∣ n φ ( i ) ∑ j ∣ m φ ( j ) = ∑ i ∣ n ∑ j ∣ m φ ( i ) ⋅ φ ( j ) = ∑ i ∣ n ∑ j ∣ m φ ( i ⋅ j ) = ∑ d ∣ n m φ ( d ) = f ( n m ) \begin{aligned}f(n)·f(m)=\sum_{i|n}\varphi(i)\sum_{j|m}\varphi(j)=\sum_{i|n}\sum_{j|m}\varphi(i)·\varphi(j)=\sum_{i|n}\sum_{j|m}\varphi(i·j)=\sum_{d|nm}\varphi(d)=f(nm)\end{aligned} f(n)⋅f(m)=i∣n∑φ(i)j∣m∑φ(j)=i∣n∑j∣m∑φ(i)⋅φ(j)=i∣n∑j∣m∑φ(i⋅j)=d∣nm∑φ(d)=f(nm)
f ( p k ) = φ ( 1 ) + φ ( p ) + φ ( p 2 ) + ⋯ + φ ( p k ) = 1 + ( p − 1 ) + ( p 2 − p ) + ⋯ + ( p k − p k − 1 ) = p k f(p^k)=\varphi(1)+\varphi(p)+\varphi(p^2)+\cdots+\varphi(p^k)=1+(p-1)+(p^2-p)+\cdots+(p^k-p^{k-1})=p^k f(pk)=φ(1)+φ(p)+φ(p2)+⋯+φ(pk)=1+(p−1)+(p2−p)+⋯+(pk−pk−1)=pk
n = p 1 k 1 ⋅ p 2 k 2 ⋅ ⋯ ⋅ p m k m n=p_1^{k_1} ·p_2^{k_2}· \cdots·p_m^{k_m} n=p1k1⋅p2k2⋅⋯⋅pmkm
f ( n ) = f ( p 1 k 1 ) ⋅ f ( p 2 k 2 ) ⋅ ⋯ ⋅ f ( p m k m ) = p 1 k 1 ⋅ p 2 k 2 ⋅ ⋯ ⋅ p m k m = n f(n)=f(p_1^{k_1})·f(p_2^{k_2})·\cdots·f(p_m^{k_m})=p_1^{k_1} ·p_2^{k_2}· \cdots·p_m^{k_m}=n f(n)=f(p1k1)⋅f(p2k2)⋅⋯⋅f(pmkm)=p1k1⋅p2k2⋅⋯⋅pmkm=n
-
f
(
n
)
f(n)
f(n)为积性函数
欧拉定理
若 a , m a,m a,m互质, a φ ( m ) ≡ 1 ( m o d m ) a^{\varphi(m)}≡1(mod\ m) aφ(m)≡1(mod m)
-
证明
-
剩余系 指对于某一个特定的正整数
n
n
n,一个整数集中的数
m
o
d
n
mod\ n
mod n所得的余数域。
- 完全剩余系 设 m ∈ Z + m\in Z+ m∈Z+,若 r 0 , r 1 , . . . r m − 1 r_0,r_1,...r_{m−1} r0,r1,...rm−1为 m m m个整数,并且两两模 m m m不同余,则 r 0 , r 1 , . . . r m − 1 r_0,r_1,...r_{m−1} r0,r1,...rm−1叫作模 m m m的一个完全剩余系。
- 缩系 设 A A A是 m o d n mod\ n mod n的剩余系,若任意 A A A中两个元素相乘 m o d n mod\ n mod n后仍为 A A A中的元素,则称 A A A为 m o d n mod\ n mod n的缩系
- 若
a
,
m
a,m
a,m互质,则
m
m
m的一个缩系为
{ x 1 , x 2 , x 3 . . . x φ ( m ) } \{x_1,x_2,x_3...x_{\varphi(m)}\} {x1,x2,x3...xφ(m)}
{ a x 1 % m , a x 2 % m , a x 3 % m . . . a x φ ( m ) % m } \{ax_1\%m,ax_2\%m,ax_3\%m...ax_{\varphi(m)}\%m\} {ax1%m,ax2%m,ax3%m...axφ(m)%m}也是 m o d m mod\ m mod m的缩系
于是可以得到
∑ i = 1 φ ( m ) a x i ≡ ∑ i = 1 φ ( m ) x i ( m o d m ) \sum_{i=1}^{\varphi(m)}ax_i\equiv \sum_{i=1}^{\varphi(m)}x_i\ (mod\ m) ∑i=1φ(m)axi≡∑i=1φ(m)xi (mod m)
a φ ( m ) ∑ i = 1 φ ( m ) x i ≡ ∑ i = 1 φ ( m ) x i ( m o d m ) a^{\varphi(m)}\sum_{i=1}^{\varphi(m)}x_i\equiv \sum_{i=1}^{\varphi(m)}x_i\ (mod\ m) aφ(m)∑i=1φ(m)xi≡∑i=1φ(m)xi (mod m)
a φ ( m ) ≡ 1 ( m o d m ) a^{\varphi(m)}\equiv 1\ (mod\ m) aφ(m)≡1 (mod m)- 而当
m
m
m为质数时,
φ
(
m
)
=
m
−
1
\varphi(m)=m-1
φ(m)=m−1
a ( m − 1 ) ≡ 1 ( m o d m ) a^{(m-1)}≡1(mod\ m) a(m−1)≡1(mod m)
这就是我们熟知的 费马小定理
- 而当
m
m
m为质数时,
φ
(
m
)
=
m
−
1
\varphi(m)=m-1
φ(m)=m−1
-
剩余系 指对于某一个特定的正整数
n
n
n,一个整数集中的数
m
o
d
n
mod\ n
mod n所得的余数域。
-
变式 a , m a,m a,m互质 a b ≡ a b % φ ( m ) ( m o d m ) a^b≡a^{b\%\varphi(m)}(mod\ m) ab≡ab%φ(m)(mod m)
扩展欧拉定理
若 b > φ ( m ) b>\varphi(m) b>φ(m) 即使 a , m a,m a,m不互质, a b ≡ a b % φ ( m ) + φ ( m ) ( m o d m ) a^b≡a^{b \%\varphi(m)+\varphi(m)}\left(mod\ m\right) ab≡ab%φ(m)+φ(m)(mod m)
- 证明
从 m m m中提一个质因子 p p p出来 令 m = p k ⋅ s m=p^k·s m=pk⋅s
有 g c d ( p k , s ) = 1 gcd(p^k,s)=1 gcd(pk,s)=1,即 p k , s p^k,s pk,s互质
根据欧拉定理,我们知道 p φ ( s ) ≡ 1 ( m o d s ) p^{\varphi(s)}≡1(mod\ s) pφ(s)≡1(mod s)
根据欧拉函数是积性函数,我们知道 φ ( s ) ∣ φ ( m ) \varphi(s)|\varphi(m) φ(s)∣φ(m)所以有 p φ ( m ) ≡ p φ ( s ) ( m o d s ) p^{\varphi(m)}≡p^{\varphi(s)}(mod\ s) pφ(m)≡pφ(s)(mod s)
设 p φ ( s ) = x s + 1 p^{\varphi(s)}=xs+1 pφ(s)=xs+1
那么 p φ ( s ) + k = x m + p k p^{\varphi(s)+k}=xm+p^k pφ(s)+k=xm+pk
所以 p φ ( s ) + k ≡ p k ( m o d m ) p^{\varphi(s)+k}≡p^k (mod\ m) pφ(s)+k≡pk(mod m),也有 p φ ( m ) + k ≡ p k ( m o d m ) p^{\varphi(m)+k}≡p^k (mod\ m) pφ(m)+k≡pk(mod m)
当 b > = k b>=k b>=k时, p b ≡ p b − k ⋅ p k ≡ p b − k ⋅ p φ ( s ) + k ≡ p b + φ ( m ) ( m o d m ) p^b≡p^{b-k}·p^k≡p^{b-k}·p^{\varphi(s)+k}≡p^{b+\varphi(m)}(mod\ m) pb≡pb−k⋅pk≡pb−k⋅pφ(s)+k≡pb+φ(m)(mod m)
又因为 k < = φ ( p k ) < = φ ( m ) k<=\varphi(p^k)<=\varphi(m) k<=φ(pk)<=φ(m),所以当 b > = 2 φ ( m ) b>=2\varphi(m) b>=2φ(m)时,满足 p b ≡ p b − φ ( m ) ( m o d m ) p^b≡p^{b-\varphi(m)}(mod\ m) pb≡pb−φ(m)(mod m)
注意是 2 φ ( m ) 2\varphi(m) 2φ(m)!
所以可以得到 p b ≡ p b % φ ( m ) + φ ( m ) ( m o d m ) p^b≡p^{b\%\varphi(m)+\varphi(m)}(mod\ m) pb≡pb%φ(m)+φ(m)(mod m)
因此我们可以得到对任意质数 p p p都有 b > = 2 φ ( m ) , p b ≡ p b % φ ( m ) + φ ( m ) ( m o d m ) b>=2\varphi(m),p^b≡p^{b\%\varphi(m)+\varphi(m)}(mod\ m) b>=2φ(m),pb≡pb%φ(m)+φ(m)(mod m)
非 m m m质因子的 p p p,有欧拉定理
将 a a a因式分解,可以得到
a b ≡ a b % φ ( m ) + φ ( m ) ( m o d m ) a^b≡a^{b\%\varphi(m)+\varphi(m)}(mod\ m) ab≡ab%φ(m)+φ(m)(mod m)- 注意 b < φ ( m ) b<\varphi(m) b<φ(m)时,公式不一定成立
线性筛法
类似与筛素数,我们在这里利用欧拉函数是积性函数这个性质来筛
φ
\varphi
φ
C
o
d
e
\mathcal{Code}
Code
int cnt;
int prime[maxn],phi[maxn];
bool vis[maxn];
void Euler_sieve (int n)
{
phi[1]=1;
for (int i=2;i<=n;++i){
if (!vis[i]) prime[++cnt]=i,phi[i]=i-1;
for (int j=1;j<=cnt&&i*prime[j]<=n;++j){
vis[i*prime[j]]=true;
if (i%prime[j]==0){ phi[i*prime[j]]=phi[i]*prime[j];break;}
phi[i*prime[j]]=phi[i]*phi[prime[j]];
}
}
}
欧拉反演
利用欧拉函数的一条性质
n
=
∑
d
∣
n
φ
(
d
)
\begin{aligned}n=\sum_{d|n}\varphi(d)\end{aligned}
n=d∣n∑φ(d)
(上面有证明)
我们试着把
n
n
n换成其他东西试试
g
c
d
(
i
,
j
)
=
∑
d
∣
g
c
d
(
i
,
j
)
φ
(
d
)
=
∑
d
∣
i
∑
d
∣
j
φ
(
d
)
\begin{aligned}gcd(i,j)=\sum_{d|gcd(i,j)}\varphi(d)=\sum_{d|i}\sum_{d|j}\varphi(d)\end{aligned}
gcd(i,j)=d∣gcd(i,j)∑φ(d)=d∣i∑d∣j∑φ(d)
让我们求个东西试试
∑
i
=
1
n
g
c
d
(
i
,
n
)
=
∑
i
=
1
n
∑
d
∣
i
∑
d
∣
n
φ
(
d
)
=
∑
d
∣
n
∑
i
=
1
n
∑
d
∣
i
φ
(
d
)
=
∑
d
∣
n
n
d
φ
(
d
)
\begin{aligned}\sum_{i=1}^ngcd(i,n)=\sum_{i=1}^n\sum_{d|i}\sum_{d|n}\varphi(d)=\sum_{d|n}\sum_{i=1}^n\sum_{d|i}\varphi(d)=\sum_{d|n}\frac{n}{d}\varphi(d)\end{aligned}
i=1∑ngcd(i,n)=i=1∑nd∣i∑d∣n∑φ(d)=d∣n∑i=1∑nd∣i∑φ(d)=d∣n∑dnφ(d)
把它重写一遍作为结论
∑
i
=
1
n
g
c
d
(
i
,
n
)
=
∑
d
∣
n
n
d
φ
(
d
)
\begin{aligned}\sum_{i=1}^ngcd(i,n)=\sum_{d|n}\frac{n}{d}\varphi(d)\end{aligned}
i=1∑ngcd(i,n)=d∣n∑dnφ(d)
如有哪里讲得不是很明白或是有错误,欢迎指正
如您喜欢的话不妨点个赞收藏一下吧
如能得到推荐博主就更开心了
您的鼓励是博主的动力