欧拉函数
定义
我们定义
φ
(
x
)
\varphi (x)
φ(x) 为 小于
x
x
x 的正整数中与
x
x
x
互质的数的个数,称作欧拉函数。数学方式表达就是
φ ( x ) = ∑ i < x [ i ⊥ x ] \varphi(x) = \sum_{i < x} [i \bot x] φ(x)=i<x∑[i⊥x]
但需要注意,我们定义 φ ( 1 ) = 1 \varphi(1) = 1 φ(1)=1 。
性质
-
若 x x x 为质数, φ ( x ) = x − 1 \varphi(x) = x - 1 φ(x)=x−1 。
证明:这个很显然了,因为除了质数本身的数都与它互质。
-
若 x = p k x = p^k x=pk ( p p p 为质数, x x x
为单个质数的整数幂),则 φ ( x ) = ( p − 1 ) × p k − 1 \varphi(x) = (p - 1) \times p ^ {k - 1} φ(x)=(p−1)×pk−1 。证明:不难发现所有 p p p 的倍数都与 x x x
不互质,其他所有数都与它互质。p p p 的倍数刚好有 p k − 1 p^{k-1} pk−1 个(包括了 x x x 本身)。
那么就有 φ ( x ) = p k − p k − 1 = ( p − 1 ) × p k − 1 \varphi(x) = p^k - p^{k-1} = (p - 1) \times p^{k- 1} φ(x)=pk−pk−1=(p−1)×pk−1 。
-
若 p , q p, q p,q 互质,则有 φ ( p × q ) = φ ( p ) × φ ( q ) \varphi(p \times q) = \varphi(p) \times \varphi(q) φ(p×q)=φ(p)×φ(q) ,也就是欧拉函数是个积性函数。
证明 :
如果 a a a 与 p p p 互质 ( a < p ) (a<p) (a<p) , b b b 与 q q q
互质 ( b < q ) (b<q) (b<q) , c c c 与 p q pq pq 互质 ( c < p q ) (c<pq) (c<pq) ,则
c c c 与数对 ( a , b ) (a,b) (a,b) 是一一对应关系。由于 a a a 的值有
φ ( p ) \varphi (p) φ(p) 种可能, b b b 的值有 φ ( q ) \varphi(q) φ(q)
种可能,则数对 ( a , b ) (a,b) (a,b) 有 φ ( p ) φ ( q ) φ(p)φ(q) φ(p)φ(q) 种可能,而 c c c
的值有 φ ( p q ) φ(pq) φ(pq) 种可能,所以 φ ( p q ) φ(pq) φ(pq) 就等于 φ ( p ) φ ( q ) φ(p)φ(q) φ(p)φ(q)
。具体来说这一条需要 中国剩余定理 以及 完全剩余系
才能证明,感性理解一下它的思路吧。 -
对于一个正整数 x x x 的质数幂分解 x = p 1 k 1 × p 2 k 2 × ⋯ × p n k n = ∏ i = 1 n p i k i \displaystyle x = {p_1}^{k_1} \times {p_2}^{k_2} \times \cdots \times {p_{n} }^{k_n} = \prod _{i=1}^{n} {p_i}^{k_i} x=p1k1×p2k2×⋯×pnkn=i=1∏npiki 。
φ ( x ) = x × ( 1 − 1 p 1 ) × ( 1 − 1 p 2 ) × ⋯ × ( 1 − 1 p n ) = x ∏ i = 1 n ( 1 − 1 p i ) \displaystyle \varphi(x) = x \times (1 - \frac{1}{p_1}) \times (1 - \frac{1}{p_2}) \times \cdots \times (1 - \frac{1}{p_n}) = x\prod_{i=1}^{n} (1-\frac{1}{p_i}) φ(x)=x×(1−p11)×(1−p21)×⋯×(1−pn1)=xi=1∏n(1−pi1)
证明:
我们考虑用前几条定理一起来证明。
φ ( x ) = ∏ i = 1 n φ ( p i k i ) = ∏ i = 1 n ( p i − 1 ) × p i k i − 1 = ∏ i = 1 n p i k i × ( 1 − 1 p i ) = x ∏ i = 1 n ( 1 − 1 p i ) \begin{aligned} \varphi(x) &= \prod_{i=1}^{n} \varphi(p_i^{k_i}) \\ &= \prod_{i=1}^{n} (p_i-1)\times {p_i}^{k_i-1}\\ &=\prod_{i=1}^{n} {p_i}^{k_i} \times(1-\frac{1}{p_i})\\ &=x \prod_{i=1}^{n} (1-\frac{1}{p_i}) \end{aligned} φ(x)=i=1∏nφ(piki)=i=1∏n(pi−1)×piki−1=i=1∏npiki×(1−pi1)=xi=1∏n(1−pi1)
-
若 p p p 为 x x x 的约数( p p p 为质数, x x x 为任意正整数),我们有 φ ( x × p ) = φ ( x ) × p \varphi(x \times p) = \varphi(x) \times p φ(x×p)=φ(x)×p 。
证明:
我们利用之前的第 4 4 4 个性质来证明就行了。
不难发现 ∏ i = 1 n ( 1 − 1 p i ) \displaystyle \prod _{i=1}^{n} (1 - \frac{1}{p_i}) i=1∏n(1−pi1) 是不会变的,前面的那个 x x x 会变成 x × p x \times p x×p 。
所以乘 p p p 就行了。
-
若 p p p 不是 x x x 的约数( p p p 为质数, x x x
为任意正整数),我们有 φ ( x × p ) = φ ( x ) × ( p − 1 ) \varphi(x \times p) = \varphi(x) \times (p - 1) φ(x×p)=φ(x)×(p−1) 。证明 : p , x p, x p,x 互质,由于 φ \varphi φ 积性直接得到。
求欧拉函数
求解单个欧拉函数
我们考虑质因数分解,然后直接利用之前的性质 4 4 4 来求解。
快速分解的话可以用 P o l l a r d R h o PollardRho PollardRho 算法。
求解一系列欧拉函数
首先需要学习 线性筛,我们将其改一些地方。
质数 p p p 的 φ ( p ) = p − 1 \varphi(p) = p-1 φ(p)=p−1 。
对于枚举一个数 i i i 和另外一个质数 p p p 的积 x x x 。
我们在线性筛,把合数筛掉会分两种情况。
-
p
p
p 不是
i
i
i 的一个约数,由于性质
5
5
5 就有
φ ( x ) = φ ( i ) × ( p − 1 ) \varphi(x) = \varphi(i) \times (p - 1) φ(x)=φ(i)×(p−1) 。 -
p
p
p 是
i
i
i 的一个约数,此时我们会跳出循环,由于性质
6
6
6
有 φ ( x ) = φ ( i ) × p \varphi(x) = \varphi(i) \times p φ(x)=φ(i)×p 。
代码实现
bitset<N> is_prime; int prime[N], phi[N], cnt = 0;
void Init(int maxn) {
is_prime.set(); is_prime[0] = is_prime[1] = false; phi[1] = 1;
For (i, 2, maxn) {
if (is_prime[i]) phi[i] = i - 1, prime[++ cnt] = i;
For (j, 1, cnt) {
int res = i * prime[j];
if (res > maxn) break;
is_prime[res] = false;
if (i % prime[j]) phi[res] = phi[i] * (prime[j] - 1);
else { phi[res] = phi[i] * prime[j]; break; }
}
}
}
欧拉定理
若正整数 a a a 与 m m m 互质,则
a φ ( m ) ≡ 1 ( m o d m ) a^{\varphi(m)} \equiv 1\pmod m aφ(m)≡1(modm)
扩展欧拉定理
a b ≡ { a b b < φ ( p ) a b m o d φ ( p ) + φ ( p ) b ≥ φ ( p ) ( m o d p ) a^b\equiv \begin{cases} a^b & b<\varphi(p)\\ a^{b \ \bmod \ \varphi(p) + \varphi(p)} & b\geq\varphi(p) \end{cases} \pmod p ab≡{abab mod φ(p)+φ(p)b<φ(p)b≥φ(p)(modp)
简单证明一下欧拉定理和扩展欧拉定理:
欧拉函数的定义: φ ( n ) = ∑ i = 1 n [ gcd ( i , n ) = 1 ] \varphi(n)=\sum\limits_{i=1}^{n}[\gcd(i,n)=1] φ(n)=i=1∑n[gcd(i,n)=1]。
欧拉函数的性质:
- 若 n = p k n=p^k n=pk,其中 p p p 为质数,则 φ ( n ) = p k − p k − 1 = ( p − 1 ) p k − 1 \varphi(n)=p^k-p^{k-1}=(p-1)p^{k-1} φ(n)=pk−pk−1=(p−1)pk−1。因为 n n n 只有 p p p 一个素因子,所以除了 p p p 的倍数之外其余数都与 n n n 互质。
欧拉定理
对于两个正整数
a
,
n
a,n
a,n,若
gcd
(
a
,
n
)
=
1
\gcd(a,n)=1
gcd(a,n)=1,则:
a
φ
(
n
)
≡
1
(
m
o
d
n
)
a^{\varphi(n)} \equiv 1 \pmod n
aφ(n)≡1(modn)
设有
φ
(
n
)
\varphi(n)
φ(n) 个数
x
1
,
x
2
,
…
,
x
φ
(
n
)
x_1,x_2,\dots,x_{\varphi(n)}
x1,x2,…,xφ(n),满足
∀
i
,
1
≤
i
≤
φ
(
n
)
:
gcd
(
x
i
,
n
)
=
1
,
x
i
<
n
\forall i,1 \leq i \leq \varphi(n):\gcd(x_i,n)=1,x_i< n
∀i,1≤i≤φ(n):gcd(xi,n)=1,xi<n。
易见这 φ ( n ) \varphi(n) φ(n) 个数模 n n n 两两不同并且余数与 n n n 互质。
考虑证明 a x 1 , a x 2 , … , a x φ ( n ) ax_1,ax_2,\dots,ax_{\varphi(n)} ax1,ax2,…,axφ(n) 也满足以上两个性质。
-
这 φ ( n ) \varphi(n) φ(n) 个数模 n n n 两两不同:
-
使用反证法。
若 ∃ 1 ≤ i < j ≤ φ ( n ) : a x i − a x j ≡ 0 ( m o d n ) \exists 1 \leq i < j \leq \varphi(n):ax_i-ax_j \equiv 0(\bmod \ n) ∃1≤i<j≤φ(n):axi−axj≡0(mod n)。因为 gcd ( a , n ) = 1 \gcd(a,n)=1 gcd(a,n)=1,又因为 a i − a j a_i-a_j ai−aj 不可能是 n n n 的倍数,因此假设不成立。所以 a x 1 , a x 2 , … , a x φ ( n ) ax_1,ax_2,\dots,ax_{\varphi(n)} ax1,ax2,…,axφ(n) 模 n n n 两两不同;
-
-
余数与 n n n 互质: gcd ( a , n ) = 1 , gcd ( x i , n ) = 1 \gcd(a,n)=1,\gcd(x_i,n)=1 gcd(a,n)=1,gcd(xi,n)=1。所以 gcd ( a x i , n ) = 1 \gcd(ax_i,n)=1 gcd(axi,n)=1。类似于辗转相除法可以证明这个结论。
所以 a x 1 , a x 2 , … , a x φ ( n ) ax_1,ax_2,\dots,ax_{\varphi(n)} ax1,ax2,…,axφ(n) 也满足以上两个性质。
我们发现与 n n n 互质并且小于 n n n 的 φ ( n ) \varphi(n) φ(n) 个数是固定的。
所以对于任意 1 ≤ i ≤ φ ( n ) 1 \leq i \leq \varphi(n) 1≤i≤φ(n),都存在唯一一个 1 ≤ j ≤ φ ( n ) 1 \leq j \leq \varphi(n) 1≤j≤φ(n),满足 x i ≡ a x j ( m o d n ) x_i \equiv ax_j(\bmod \ n) xi≡axj(mod n)。
因此:
a
x
1
a
x
2
…
a
x
φ
(
n
)
≡
x
1
x
2
…
x
φ
(
n
)
(
m
o
d
n
)
ax_1ax_2\dots ax_{\varphi(n)} \equiv x_1x_2\dots x_{\varphi(n)} (\bmod \ n)
ax1ax2…axφ(n)≡x1x2…xφ(n)(mod n)
两边消掉(互质),得到:
a
φ
(
n
)
≡
1
(
m
o
d
n
)
a^{\varphi(n)}\equiv 1(\bmod \ n)
aφ(n)≡1(mod n)
证毕。
扩展欧拉定理
命题 1 1 1:当 a a a 为质数时, p c ≡ p c m o d φ ( m ) + φ ( m ) ( m o d m ) p^c \equiv p^{c \ \bmod\ \varphi(m)+\varphi(m) \pmod{m}} pc≡pc mod φ(m)+φ(m)(modm) 成立
证明:
令 m = s ⋅ p r m=s \cdot p^r m=s⋅pr, gcd ( s , p ) = 1 \gcd(s,p)=1 gcd(s,p)=1。
因为 p φ ( s ) ≡ 1 ( m o d s ) p^{\varphi(s)}\equiv 1 \pmod s pφ(s)≡1(mods)(欧拉定理),又有 gcd ( s , p ) = 1 \gcd(s,p)=1 gcd(s,p)=1,根据性质一,有 φ ( s ) ∣ φ ( m ) \varphi(s)|\varphi(m) φ(s)∣φ(m),也就是说 p φ ( m ) ≡ 1 ( m o d s ) p^{\varphi(m)}\equiv 1\pmod s pφ(m)≡1(mods)。
根据同余的性质,两边同乘 p r p^r pr,得 p φ ( m ) + r ≡ p r ( m o d m ) p^{\varphi(m)+r}\equiv p^r \pmod m pφ(m)+r≡pr(modm)。
那么 p c ≡ p c − r + r ≡ p φ ( m ) + r ( m o d m ) , c ≥ r p^c \equiv p^{c-r+r}\equiv p^{\varphi(m)+r} \pmod m,c \ge r pc≡pc−r+r≡pφ(m)+r(modm),c≥r。
显然 r ≤ φ ( m ) r \le \varphi(m) r≤φ(m),因此 p c ≡ p φ ( m ) + c m o d m , c ≥ φ ( m ) p^c\equiv p^{\varphi(m)+c}\bmod m,c \ge \varphi(m) pc≡pφ(m)+cmodm,c≥φ(m)。
上面式子就可以表示为 p c ≡ p c m o d φ ( m ) + φ ( m ) ( m o d m ) , c ≥ φ ( m ) p^c \equiv p^{c \ \bmod \ \varphi(m) +\varphi(m)} \pmod m,c \ge \varphi(m) pc≡pc mod φ(m)+φ(m)(modm),c≥φ(m)。
命题 2 2 2:当 a a a 为质数的幂时, p c ≡ p c m o d φ ( m ) + φ ( m ) ( m o d m ) p^c \equiv p^{c \ \bmod\ \varphi(m)+\varphi(m) \pmod{m}} pc≡pc mod φ(m)+φ(m)(modm) 成立
证明:
(
p
k
)
c
=
p
k
c
≡
p
φ
(
m
)
+
k
c
≡
p
k
φ
(
m
)
+
k
c
=
(
p
k
)
φ
(
m
)
+
c
≡
(
p
k
)
c
m
o
d
φ
(
m
)
+
φ
(
m
)
(
m
o
d
m
)
,
c
≥
φ
(
m
)
(p^k)^c = p^{kc} \equiv p^{\varphi(m)+kc} \equiv p^{k\varphi(m)+kc}=(p^k)^{\varphi(m)+c}\equiv (p^k)^{c \ \bmod \ \varphi(m)+\varphi(m)} \pmod m,c \ge \varphi(m)
(pk)c=pkc≡pφ(m)+kc≡pkφ(m)+kc=(pk)φ(m)+c≡(pk)c mod φ(m)+φ(m)(modm),c≥φ(m)
命题 3 3 3:当 a a a 为合数时, p c ≡ p c m o d φ ( m ) + φ ( m ) ( m o d m ) p^c \equiv p^{c \ \bmod\ \varphi(m)+\varphi(m) \pmod{m}} pc≡pc mod φ(m)+φ(m)(modm) 成立
证明:
令
a
=
∏
p
i
a=\prod p_i
a=∏pi,
p
i
p_i
pi 且质数,那么有:
a
b
=
∏
p
i
b
=
∏
p
i
b
m
o
d
φ
(
m
)
+
φ
(
m
)
=
(
∏
p
i
)
b
m
o
d
φ
(
m
)
+
φ
(
m
)
=
a
b
m
o
d
φ
(
m
)
+
φ
(
m
)
(
m
o
d
m
)
a^b=\prod p_i^b\\=\prod p_i^{b \ \bmod \ \varphi(m) +\varphi(m)}\\=\left( \prod p_i\right)^{b \ \bmod \ \varphi(m)+\varphi(m)}\\=a^{b \ \bmod \varphi(m) +\varphi(m)}\pmod m
ab=∏pib=∏pib mod φ(m)+φ(m)=(∏pi)b mod φ(m)+φ(m)=ab modφ(m)+φ(m)(modm)
证毕。