欧拉函数,欧拉定理(费马小定理),扩展欧拉定理的证明和应用——杨子曰数学

欧拉函数,欧拉定理(费马小定理),扩展欧拉定理的证明和应用——杨子曰数学

超链接:数学合集


瞎BB:破纪录,最长的博客名!(英文题目除外)


先做个预告:
在文章的最后我们要解决一个灰常玄学的问题:求 a a a a ⋅ ⋅ ⋅ m o d   p ( 无 穷 多 个 a ) a^{a^{a^{a^{·^{·^{·}}}}}} mod \ p(无穷多个a) aaaamod pa


一、欧拉函数

1.它是啥

φ ( n ) \varphi(n) φ(n):就是小于等于n的数中与n互质的数的个数

2.性质一:欧拉函数是积性的

就是 φ ( n ∗ m ) = φ ( n ) ∗ φ ( m ) \varphi(n*m)=\varphi(n)*\varphi(m) φ(nm)=φ(n)φ(m) (条件:m,n互质)
为什么捏?
我们不妨假设小于m的数中于m互质的数为: x 1 , x 2 , x 3 . . . x φ ( m ) x_1,x_2,x_3...x_{\varphi(m)} x1,x2,x3...xφ(m),我们给它取个名字叫做m的简化剩余系
我们不妨假设小于n的数中于n互质的数为: y 1 , y 2 , y 3 . . . y φ ( n ) y_1,y_2,y_3...y_{\varphi(n)} y1,y2,y3...yφ(n),我们给它取个名字叫做n的简化剩余系

你会发现我们如果能证明好下面三个事情就得证了:

  1. g c d ( x i ∗ n + y j ∗ m , m n ) = 1 gcd(x_i*n+y_j*m,mn)=1 gcd(xin+yjm,mn)=1,也就是这小于 m n mn mn的数中与 m n mn mn互质的数可以从m的简化剩余系里选一个n的简化剩余系选一个用 ( x i ∗ n + y j ∗ m ) m o d   m n (x_i*n+y_j*m)mod\ mn (xin+yjm)mod mn算出来,我们要 φ ( n ∗ m ) \varphi(n*m) φ(nm)个数,有 φ ( n ) ∗ φ ( m ) \varphi(n)*\varphi(m) φ(n)φ(m)种选法
  2. 这样选出来的 φ ( n ) ∗ φ ( m ) \varphi(n)*\varphi(m) φ(n)φ(m)个数没有重复
  3. 这样选出来的 φ ( n ) ∗ φ ( m ) \varphi(n)*\varphi(m) φ(n)φ(m)个数没有少

一个一个慢慢来:

g c d ( x i ∗ n + y j ∗ m , m n ) = 1 gcd(x_i*n+y_j*m,mn)=1 gcd(xin+yjm,mn)=1

首先我们从 g c d ( x i , m ) = 1 gcd(x_i,m)=1 gcd(xi,m)=1开始
n和m互质,So,我们给x乘一个n等式依然成立
g c d ( x i ∗ n , m ) = 1 gcd(x_i*n,m)=1 gcd(xin,m)=1
然后我们在给 x i ∗ n x_i*n xin加上一个m的倍数 y j ∗ m y_j*m yjm,等式依然成立
g c d ( x i ∗ n + y j ∗ m , m ) = 1 ⋯ ① gcd(x_i*n+y_j*m,m)=1 \cdots① gcd(xin+yjm,m)=1
同理(对称一下),我们也可以得到:
g c d ( y j ∗ m + x i ∗ n , n ) = 1 ⋯ ② gcd(y_j*m+x_i*n,n)=1 \cdots② gcd(yjm+xin,n)=1
①和②放在一起看,你会发现: x i ∗ n + y j ∗ m x_i*n+y_j*m xin+yjm又和m互质,又和n互质,那么和mn也一定互质:
g c d ( x i ∗ n + y j ∗ m , m n ) = 1 gcd(x_i*n+y_j*m,mn)=1 gcd(xin+yjm,mn)=1
得证

②这样选出来的 φ ( n ) ∗ φ ( m ) \varphi(n)*\varphi(m) φ(n)φ(m)个数没有重复

也就是任意的 x i ∗ n + y j ∗ m x_i*n+y_j*m xin+yjm模mn都不同余
那么我们能不能这样来:如果我们能通过: x i ∗ n + y j ∗ m ≡ x p ∗ n + y q ∗ m ( m o d   m n ) x_i*n+y_j*m \equiv x_p*n+y_q*m (mod\ mn) xin+yjmxpn+yqm(mod mn)推出 i = p , j = k i=p,j=k i=p,j=k的话这个部分就得证了

那我们就来试试看呗:
x i ∗ n + y j ∗ m ≡ x p ∗ n + y q ∗ m ( m o d   m n ) x_i*n+y_j*m \equiv x_p*n+y_q*m (mod\ mn) xin+yjmxpn+yqm(mod mn)
模mn下同余,那么在模m下也同余
x i ∗ n + y j ∗ m ≡ x p ∗ n + y q ∗ m ( m o d   m ) x_i*n+y_j*m \equiv x_p*n+y_q*m (mod\ m) xin+yjmxpn+yqm(mod m)
y j ∗ m y_j*m yjm y q ∗ m y_q*m yqm都是m的倍数,模m都是0,So,扔掉也无所谓:
x i ∗ n ≡ x p ∗ n ( m o d   m ) x_i*n\equiv x_p*n(mod\ m) xinxpn(mod m)
同余号两边同时除掉一个n:
x i ≡ x p ( m o d   m ) x_i\equiv x_p(mod\ m) xixp(mod m)
m的简化剩余系中的数都互不相等
哦,那不就是i=p了吗!
同理j=q,得证!

③这样选出来的 φ ( n ) ∗ φ ( m ) \varphi(n)*\varphi(m) φ(n)φ(m)个数没有少

设 z 是mn的简化剩余系的集合的任意某个元素,那么我们现在就是要证明z一定能用 x i ∗ n + y j ∗ m x_i*n+y_j*m xin+yjm表示,黑喂狗:
我们都知道 m ∗ x 0 + n ∗ y 0 = g c d ( m , n ) m*x_0+n*y_0=gcd(m,n) mx0+ny0=gcd(m,n)一定有关于 x 0 , y 0 x_0,y_0 x0,y0的整数解
(有人问为什么吗?裴蜀定理←自己瞧)
然后我们还知道: g c d ( m , n ) = 1 gcd(m,n)=1 gcd(m,n)=1,So,一定存在整数 x 0 , y 0 x_0,y_0 x0,y0使得 m ∗ x 0 + n ∗ y 0 = 1 m*x_0+n*y_0=1 mx0+ny0=1 ,然后同时乘个z,于是我们得到了:
m ∗ x 0 ∗ z + n ∗ y 0 ∗ z = z m*x_0*z+n*y_0*z=z mx0z+ny0z=z
也就是一定存在整数x,y,满足: m ∗ x + n ∗ y = z m*x+n*y=z mx+ny=z

然后我们把 g c d ( z , m n ) = 1 gcd(z,mn)=1 gcd(z,mn)=1里的z带掉,得到了:
g c d ( m ∗ x + n ∗ y , m n ) = 1 gcd(m*x+n*y,mn)=1 gcd(mx+ny,mn)=1
那么下面这个也一定成立:
g c d ( m ∗ x + n ∗ y , m ) = 1 gcd(m*x+n*y,m)=1 gcd(mx+ny,m)=1
m ∗ x m*x mx是m的倍数,So, m ∗ x m*x mx对这两个东西的互质毫无贡献,于是乎我们又得到了:
g c d ( n ∗ y , m ) = 1 gcd(n*y,m)=1 gcd(ny,m)=1
有没有发现n和m是互质的,然后我们就美滋滋地得到了:
g c d ( y , m ) = 1 gcd(y,m)=1 gcd(y,m)=1
然后咱们再用一下欧几里得算法(戳我):
g c d ( m , y   m o d   m ) = 1 gcd(m,y \ mod\ m)=1 gcd(m,y mod m)=1
也就是说 y   m o d   m y \ mod\ m y mod m是一个小于m且和m互质的数,有没有发现它一定在m的简化剩余系的简化剩余系里(←它的定义就是这样的呀)
然后我们就开心地得到了:
y ≡ x i ( m o d   m ) y\equiv x_i(mod\ m) yxi(mod m)
我们再把整个式子都乘个n,我们就有了:
n ∗ y ≡ n ∗ x i ( m o d   n m ) ⋯ ① n*y\equiv n*x_i(mod\ nm) \cdots① nynxi(mod nm)
同理,我们还有:
m ∗ x ≡ m ∗ y j ( m o d   n m ) ⋯ ② m*x\equiv m*y_j(mod\ nm) \cdots② mxmyj(mod nm)
最后把①②咔嚓一加:
m ∗ x + n ∗ y ≡ n ∗ x i + m ∗ y i ( m o d   n m ) m*x+n*y\equiv n*x_i+m*y_i(mod\ nm) mx+nynxi+myi(mod nm)
就是:
z ≡ n ∗ x i + m ∗ y i ( m o d   n m ) z\equiv n*x_i+m*y_i(mod\ nm) znxi+myi(mod nm)
完美得证!

至此我们终于得到了,欧拉函数的积性o( ̄▽ ̄)ブ


3.性质二:p是质数时: φ ( p k ) = ( p − 1 ) ∗ p k − 1 \varphi(p^k)=(p-1)*p^{k-1} φ(pk)=(p1)pk1

已知小于 p k p^k pk的正整数的有 p k − 1 p^k-1 pk1个,其中和 p k p^k pk不互质的正整数有 p × 1 , p × 2 , . . . , p × ( p k − 1 − 1 ) p×1,p×2,...,p×(p^{k-1}-1) p×1,p×2,...,p×(pk11),共计 p k − 1 − 1 p^{k-1}-1 pk11

so, φ ( p k ) = p k − 1 − ( p k − 1 − 1 ) = p k − p k − 1 = ( p − 1 ) ∗ p k − 1 \varphi(p^k)= p^k-1-(p^{k-1}-1)=p^k-p^{k-1}=(p-1)*p^{k-1} φ(pk)=pk1(pk11)=pkpk1=(p1)pk1


4.怎么求捏?

我们就来根据性质一和性质二来推导一下:

我们先分解一下质因数:
φ ( n ) = φ ( p 1 k 1 ∗ p 2 k 2 ∗ p 3 k 3 ∗ ⋯ ∗ p s k s ) \varphi(n)=\varphi({p_1}^{k_1}*{p_2}^{k_2}*{p_3}^{k_3}* \cdots*{p_s}^{k_s}) φ(n)=φ(p1k1p2k2p3k3psks)
然后再由它的积性,我们得到了:
φ ( n ) = φ ( p 1 k 1 ) ∗ φ ( p 2 k 2 ) ∗ φ ( p 3 k 3 ) ∗ ⋯ ∗ φ ( p s k s ) \varphi(n)=\varphi({p_1}^{k_1})*\varphi({p_2}^{k_2})*\varphi({p_3}^{k_3})* \cdots*\varphi({p_s}^{k_s}) φ(n)=φ(p1k1)φ(p2k2)φ(p3k3)φ(psks)
然后性质2搞一搞:
φ ( n ) = ( p 1 k 1 − 1 ∗ p 2 k 2 − 1 ∗ p 3 k 3 − 1 ∗ ⋯ ∗ p s k s − 1 ) ∗ ( p 1 − 1 ) ∗ ( p 2 − 1 ) ∗ ( p 3 − 1 ) ∗ ⋯ ∗ ( p s − 1 ) \varphi(n)=({p_1}^{k_1-1}*{p_2}^{k_2-1}*{p_3}^{k_3-1}*\cdots*{p_s}^{k_s-1})*(p_1-1)*(p_2-1)*(p_3-1)* \cdots*(p_s-1) φ(n)=(p1k11p2k21p3k31psks1)(p11)(p21)(p31)(ps1)
从右边的每个小括号里拿出一个 p i p_i pi乘到左边的括号中,我们得到了:
φ ( n ) = ( p 1 k 1 ∗ p 2 k 2 ∗ p 3 k 3 ∗ ⋯ ∗ p s k s ) ∗ ( 1 − 1 p 1 ) ∗ ( 1 − 1 p 2 ) ∗ ( 1 − 1 p 3 ) ∗ ⋯ ∗ ( 1 − 1 p s ) \varphi(n)=({p_1}^{k_1}*{p_2}^{k_2}*{p_3}^{k_3}*\cdots*{p_s}^{k_s})*(1-\frac{1}{p_1})*(1-\frac{1}{p_2})*(1-\frac{1}{p_3})* \cdots*(1-\frac{1}{p_s}) φ(n)=(p1k1p2k2p3k3psks)(1p11)(1p21)(1p31)(1ps1)
也就是说,我们得到了 φ ( n ) \varphi(n) φ(n)的通项公式:
φ ( n ) = n ∗ ( 1 − 1 p 1 ) ∗ ( 1 − 1 p 2 ) ∗ ( 1 − 1 p 3 ) ∗ ⋯ ∗ ( 1 − 1 p s ) \varphi(n)=n*(1-\frac{1}{p_1})*(1-\frac{1}{p_2})*(1-\frac{1}{p_3})* \cdots*(1-\frac{1}{p_s}) φ(n)=n(1p11)(1p21)(1p31)(1ps1)

复杂度 O ( n ) O(\sqrt{n}) O(n )

求欧拉函数还有一种线性筛的做法(戳我
我们马上进入欧拉定理


二、欧拉定理

1.它是啥?

先上个欧拉定理(条件是a和n互质):

a φ ( n ) ≡ 1 ( m o d   n ) a^{\varphi(n)} \equiv1(mod \ n) aφ(n)1(mod n)


2.它为啥?

黑喂狗:
我们不妨假设小于n的数中于n互质的数为: x 1 , x 2 , x 3 . . . x φ ( n ) x_1,x_2,x_3...x_{\varphi(n)} x1,x2,x3...xφ(n),我们给它取个名字叫做集合X(这个X其实就是n的简化剩余系)

然后我们再分别令:
{ m 1 = a ∗ x 1 m 2 = a ∗ x 2 m 3 = a ∗ x 3 ⋮ m φ ( n ) = a ∗ x φ ( n ) \left\{ \begin{aligned} m_1 & = a*x_1\\ m_2 & = a*x_2\\ m_3 & = a*x_3\\ \vdots\\ m_{\varphi(n)} & = a*x_{\varphi(n)}\\ \end{aligned} \right. m1m2m3mφ(n)=ax1=ax2=ax3=axφ(n)
我们管这个m的序列叫集合M
有了集合X和集合M,我们就可以开始了

不过在开始前,我们先要证明两件事情:

  1. M中任意两个数都不模n同余
  2. M中的数模n得到的数都与n互质

一个一个来:

①M中任意两个数都不模n同余

我们用反证法

假设集合M中有 m i m_i mi m j m_j mj两个数模n同余
即: m i ≡ m j ( m o d   n ) m_i \equiv m_j(mod \ n) mimj(mod n)
也就是: m i − m j ≡ 0 ( m o d   n ) m_i-m_j \equiv 0(mod \ n) mimj0(mod n)
代入一下: a ∗ x i − a ∗ x j ≡ 0 ( m o d   n ) a*x_i-a*x_j\equiv 0(mod \ n) axiaxj0(mod n)
a ∗ ( x i − x j ) ≡ 0 ( m o d   n ) a∗(x_i−x_j)\equiv 0(mod \ n) a(xixj)0(mod n)
我们都知道a和n互质(大条件),So:
x i − x j ≡ 0 ( m o d   n ) x_i−x_j\equiv 0(mod \ n) xixj0(mod n)
我们都知道 x i x_i xi x j x_j xj都是小于n的不同数,所以 x i − x j x_i−x_j xixj一定大于0小于n,So上面那个式子怎么可能成立

得证!

②M中的数模n得到的数都与n互质

这个比较easy

我们知道: m i = a ∗ x i m_i=a*x_i mi=axi,这个式子里a与n互质, x i x_i xi与n互质,然后你就会发现 m i m_i mi也和n互质,然后欧几里得算法搞一下:
g c d ( m i , n ) = g c d ( n , m i   m o d   n ) = 1 gcd(m_i,n)=gcd(n,m_i\ mod\ n)=1 gcd(mi,n)=gcd(n,mi mod n)=1
完美,得证!

然后咱们正式开始:

由我们在上面得到的第二条可以得到: m i   m o d   n m_i \ mod\ n mi mod n出来的一定是一个小于n而且和n互质的数,So, m i   m o d   n m_i \ mod\ n mi mod n这个数一定在集合X里(集合X的定义就是这样的呀!)

有根据第一条集合M中的每个 m i   m o d   n m_i \ mod\ n mi mod n得到的数都不相同,So,你有没有发现集合M中这每个 m i   m o d   n m_i \ mod\ n mi mod n与集合X中的每个 x i x_i xi一 一对应相等

于是我们就得到了:
m 1 ∗ m 2 ∗ m 3 ∗ ⋯ ∗ m φ ( n ) ≡ x 1 ∗ x 2 ∗ x 3 ∗ ⋯ ∗ x φ ( n ) ( m o d   n ) m_1*m_2*m_3*\cdots*m_{\varphi(n)} \equiv x_1*x_2*x_3*\cdots*x_{\varphi(n)}(mod \ n) m1m2m3mφ(n)x1x2x3xφ(n)(mod n)
代入一下:
a ∗ x 1 ∗ a ∗ x 2 ∗ a ∗ x 3 ∗ ⋯ ∗ a ∗ x φ ( n ) ≡ x 1 ∗ x 2 ∗ x 3 ∗ ⋯ ∗ x φ ( n ) ( m o d   n ) a*x_1*a*x_2*a*x_3*\cdots*a*x_{\varphi(n)} \equiv x_1*x_2*x_3*\cdots*x_{\varphi(n)}(mod \ n) ax1ax2ax3axφ(n)x1x2x3xφ(n)(mod n)
a φ ( n ) ∗ ( x 1 ∗ x 2 ∗ x 3 ∗ ⋯ ∗ x φ ( n ) ) ≡ x 1 ∗ x 2 ∗ x 3 ∗ ⋯ ∗ x φ ( n ) ( m o d   n ) a^{\varphi(n)}*(x_1*x_2*x_3*\cdots*x_{\varphi(n)})\equiv x_1*x_2*x_3*\cdots*x_{\varphi(n)}(mod \ n) aφ(n)(x1x2x3xφ(n))x1x2x3xφ(n)(mod n)
哦,移过去:
( a φ ( n ) − 1 ) ∗ ( x 1 ∗ x 2 ∗ x 3 ∗ ⋯ ∗ x φ ( n ) ) ≡ 0 ( m o d   n ) (a^{\varphi(n)}-1)*(x_1*x_2*x_3*\cdots*x_{\varphi(n)})\equiv 0(mod \ n) (aφ(n)1)(x1x2x3xφ(n))0(mod n)
美滋滋,集合X中的所有数都与n互质,于是乎:
a φ ( n ) − 1 ≡ 0 ( m o d   n ) a^{\varphi(n)}-1\equiv 0(mod \ n) aφ(n)10(mod n)
a φ ( n ) ≡ 1 ( m o d   n ) a^{\varphi(n)}\equiv 1(mod \ n) aφ(n)1(mod n)

得证


到这里,你一定会问了——“这玩意什么用捏?”
“没用”
“…”
"BUT,我们把欧拉定理转换一下就有用了"


3.它能干啥?

主要可以做两件事情:

  1. 转换成费马小定理后,进行素数检测(就是给你一个数说出它是不是素数)
  2. 转换成费马小定理后求逆元(戳我
  3. 转换成扩展欧拉定理以后,欧拉降幂 a b m o d   p a^b mod\ p abmod p(这不是快速幂搞搞不就好了,戳这里就老实了)

咱们一件一件说:


4.费马小定理

当 p 是 质 数 时 : a p − 1 ≡ 1 ( m o d   p ) 当p是质数时:a^{p-1} \equiv1(mod \ p) pap11(mod p)

这……
不就是欧拉定理的特殊情况吗?
你可不要小看这个东西,他可以告诉你n是不是一个质数

“哦哦,我知道了,随便找一个小于n的数a,然后代入到费马小定理里面,看看是不是同余就可以了”

没错,就是这样,但是有一个很尴尬的事情:p为质数是费马小定理的充分不必要条件!
也就是说,对于2<=a<p,素数p一定满足费马小定理
对于一个a,满足费马小定理的p可能是合数可能是素数
不满足费马小定理一定是合数

“哦,什么垃圾算法,居然有概率是错的”

那你多找几个a不久好了,又要拼rp,美滋滋!

(一般还是不要用这个算法)

int check_prime(int n){
	if (n==1) return 0;
	if (n==2) return 1;
	for (int i=1;i<=20;i++){
		int tmp=rand()%(n-2)+2;
		if (pow(tmp,n-1,n)!=1) return 0;
	}
	return 1;
}

大家还可以去学习一种更加nb的素数检验方法——米勒拉宾素数测试


5.扩展欧拉定理

在讲扩展欧拉定理之前,先试试这个:口算 7 555   m o d   13 7^{555}\ mod\ 13 7555 mod 13

相信机智的大佬们一定有所想法,7和13互质 φ ( 13 ) \varphi(13) φ(13)=12,那我们就要凑 7 12 7^{12} 712
7 555 = 7 12 ∗ 46 + 3 = ( 7 12 ) 46 ∗ 7 3 7^{555}=7^{12*46+3}=(7^{12})^{46}*7^3 7555=71246+3=(712)4673
于是乎,就可以使用欧拉定理了
( 7 12 ) 46 ∗ 7 3 ≡ 1 46 ∗ 7 3 ( m o d   13 ) (7^{12})^{46}*7^3\equiv1^{46}*7^3(mod\ 13) (712)467314673(mod 13)
那我们就只需要算一算 7 3   m o d   13 7^3\ mod\ 13 73 mod 13就好了,得到答案5

于是有没有发现我们似乎得到了一个定理:
a b ≡ a b   m o d   φ ( n ) ( m o d   n ) a^b\equiv a^{b\ mod\ \varphi(n)}(mod\ n) abab mod φ(n)(mod n)
BUT,它只有在a和p互质的时才成立,没啥卵用,我们能不能把它拓展到一般情况捏?
于是,我们得到了扩展欧拉定理:
a b ≡ a b   m o d   φ ( n ) + φ ( n ) ( m o d   n ) a^b\equiv a^{b\ mod\ \varphi(n)+\varphi(n)}(mod\ n) abab mod φ(n)+φ(n)(mod n)

证明走起:

我们先把a分解一下质因数: a = p 1 r 1 ∗ p 2 r 2 ∗ p 3 r 3 ∗ ⋯ ∗ p s r s a={p_1}^{r_1}*{p_2}^{r_2}*{p_3}^{r_3}*\cdots*{p_s}^{r_s} a=p1r1p2r2p3r3psrs

如果我们可以证明:对于里面的每个质数 p i p_i pi,我们都能证明:
p i b ≡ p i b   m o d   φ ( n ) + φ ( n ) ( m o d   n ) {p_i}^b \equiv {p_i}^{b\ mod\ \varphi(n)+\varphi(n)}(mod\ n) pibpib mod φ(n)+φ(n)(mod n)
那么也就是我们一定可以得到:
( p i r i ) b ≡ ( p i r i ) b   m o d   φ ( n ) + φ ( n ) ( m o d   n ) ({p_i}^{r_i})^b \equiv ({p_i}^{r_i})^{b\ mod\ \varphi(n)+\varphi(n)}(mod\ n) (piri)b(piri)b mod φ(n)+φ(n)(mod n)
然后我们把每个 ( p i r i ) b ({p_i}^{r_i})^b (piri)b乘起来,就得到了:
( p 1 r 1 ∗ p 2 r 2 ∗ p 3 r 3 ∗ ⋯ ∗ p s r s ) b ≡ ( p 1 r 1 ∗ p 2 r 2 ∗ p 3 r 3 ∗ ⋯ ∗ p s r s ) b   m o d   φ ( n ) + φ ( n ) ( m o d   n ) ({p_1}^{r_1}*{p_2}^{r_2}*{p_3}^{r_3}*\cdots*{p_s}^{r_s})^b \equiv ({p_1}^{r_1}*{p_2}^{r_2}*{p_3}^{r_3}*\cdots*{p_s}^{r_s})^{b\ mod\ \varphi(n)+\varphi(n)}(mod\ n) (p1r1p2r2p3r3psrs)b(p1r1p2r2p3r3psrs)b mod φ(n)+φ(n)(mod n)
也就是我们要证明的:
a b ≡ a b   m o d   φ ( n ) + φ ( n ) ( m o d   n ) a^b\equiv a^{b\ mod\ \varphi(n)+\varphi(n)}(mod\ n) abab mod φ(n)+φ(n)(mod n)

那现在我们就开始证明: p b ≡ p b   m o d   φ ( n ) + φ ( n ) ( m o d   n ) ( p 是 一 个 质 数 ) p^b \equiv p^{b\ mod\ \varphi(n)+\varphi(n)}(mod\ n)(p是一个质数) pbpb mod φ(n)+φ(n)(mod n)p

p是一个质数,So,如果n不是p的倍数,那么n和p一定互质,显然成立,就是我们上面自己推出来的那个式子右边多乘了一个 p φ ( n ) p^{\varphi(n)} pφ(n)

p φ ( n )   m o d   n = 1 ( 欧 拉 定 理 ) p^{\varphi(n)} \ mod \ n=1(欧拉定理) pφ(n) mod n=1(),So,等式当然成立

那么我们现在就来考虑n是p的倍数的情况:

假设: n = p k ∗ s n=p^k*s n=pks(s和p互质)
由于s和p的互质,我们就可以欧拉定理了:
p φ ( s ) ≡ 1 ( m o d   s ) p^{\varphi(s)} \equiv1(mod \ s) pφ(s)1(mod s)
这个式子也显然成立:
( p φ ( s ) ) φ ( p k ) ≡ 1 ( m o d   s ) (p^{\varphi(s)})^{\varphi(p^k)} \equiv1(mod \ s) (pφ(s))φ(pk)1(mod s)
上面已经说过了,欧拉函数是积性函数,又因为 p k p^k pk和s互质,So:
φ ( n ) = φ ( p k ) ∗ φ ( s ) \varphi(n)=\varphi(p^k)*\varphi(s) φ(n)=φ(pk)φ(s)
于是我们就得到了:
p φ ( n ) ≡ 1 ( m o d   s ) ⋯ ① ( 这 个 式 子 下 面 还 要 用 ) p^{\varphi(n)} \equiv1(mod \ s)\cdots①(这个式子下面还要用) pφ(n)1(mod s)
又因为:
p b = ( p φ ( n ) ) ⌊ b / φ ( n ) ⌋ ∗ p b   m o d   φ ( n ) p^b=(p^{\varphi(n)})^{\lfloor b/\varphi(n)\rfloor}*p^{b\ mod\ \varphi(n)} pb=(pφ(n))b/φ(n)pb mod φ(n)
还因为:
( p φ ( n ) ) ⌊ b / φ ( n ) ⌋   m o d   s = 1 ( 看 ① 式 ) (p^{\varphi(n)})^{\lfloor b/\varphi(n)\rfloor}\ mod\ s=1(看①式) (pφ(n))b/φ(n) mod s=1
我们得到了:
p b ≡ p b   m o d   φ ( n ) ( m o d   s ) p^b\equiv p^{b\ mod\ \varphi(n)}(mod\ s) pbpb mod φ(n)(mod s)
我们再把整个式子乘 p k p^k pk,得到:
p b + k ≡ p b   m o d   φ ( n ) + k ( m o d   s ∗ p k ) p^{b+k}\equiv p^{b\ mod\ \varphi(n)+k}(mod\ s*p^k) pb+kpb mod φ(n)+k(mod spk)
p b + k ≡ p b   m o d   φ ( n ) + k ( m o d   n ) p^{b+k}\equiv p^{b\ mod\ \varphi(n)+k}(mod\ n) pb+kpb mod φ(n)+k(mod n)

如果,我们把左右两边同时乘 p φ ( n ) − k p^{\varphi(n)-k} pφ(n)k,你就会惊悚地发现:
p b + φ ( n ) ≡ p b   m o d   φ ( n ) + φ ( n ) ( m o d   n ) ⋯ ② p^{b+\varphi(n)}\equiv p^{b\ mod\ \varphi(n)+\varphi(n)}(mod\ n)\cdots② pb+φ(n)pb mod φ(n)+φ(n)(mod n)
已经非常接近答案了,我们在把①乘 p k p^k pk,得到了:
p φ ( n ) + k ≡ p k ( m o d   p k ∗ s ) p^{\varphi(n)+k} \equiv p^k(mod \ p^k*s) pφ(n)+kpk(mod pks)
p φ ( n ) + k ≡ p k ( m o d   n ) ⋯ ③ p^{\varphi(n)+k} \equiv p^k(mod\ n)\cdots③ pφ(n)+kpk(mod n)
然后我们有这样的等式:
p b ≡ p b − k ∗ p k ( m o d   n ) p^b\equiv p^{b-k}*p^k(mod\ n) pbpbkpk(mod n)
然后根据③把 p k p^k pk p φ ( n ) + k p^{\varphi(n)+k} pφ(n)+k带掉,我们有了:
p b ≡ p b + φ ( n ) ( m o d   n ) p^b\equiv p^{b+\varphi(n)}(mod\ n) pbpb+φ(n)(mod n)
最后把这个式子带回②的左边:
p b ≡ p b   m o d   φ ( n ) + φ ( n ) ( m o d   n ) p^b \equiv p^{b\ mod\ \varphi(n)+\varphi(n)}(mod\ n) pbpb mod φ(n)+φ(n)(mod n)
哦,我们得证了!


接下来我来解答文章开头的那个问题:
求 a a a a ⋅ ⋅ ⋅ m o d   p ( 无 穷 多 个 a ) 求a^{a^{a^{a^{·^{·^{·}}}}}} mod \ p(无穷多个a) aaaamod pa
我们不妨令 x = a a a a ⋅ ⋅ ⋅ x=a^{a^{a^{a^{·^{·^{·}}}}}} x=aaaa
那么我们现在就是要求 x   m o d   p x\ mod\ p x mod p
然后你会发现x这个数有一个很神奇但很好理解的性质: x = a x x=a^x x=ax
So,我们现在要求: a x   m o d   p a^x\ mod\ p ax mod p
哦,有没有发现可以用拓展欧拉定理了!
于是我们得到了:
a x ≡ a x   m o d   φ ( p ) + φ ( p ) ( m o d   p ) a^x\equiv a^{x\ mod\ \varphi(p)+\varphi(p)}(mod\ p) axax mod φ(p)+φ(p)(mod p)
然后问题就转化为求等式右边那个东西,想要求出这个东西,就是要求出—— x   m o d   φ ( p ) x\ mod\ \varphi(p) x mod φ(p)

哦,有没有发现问题变回了开始的样子,只不过p变成了 φ ( p ) \varphi(p) φ(p),我们在继续试试:

这时x依然等于 a x a^x ax

根据欧拉定理:
a x ≡ a x   m o d   φ ( φ ( p ) ) + φ ( φ ( p ) ) ( m o d   φ ( p ) ) a^x\equiv a^{x\ mod\ \varphi(\varphi(p))+\varphi(\varphi(p))}(mod\ \varphi(p)) axax mod φ(φ(p))+φ(φ(p))(mod φ(p))
此时,我们就要求的就是 x   m o d   φ ( φ ( p ) ) x\ mod\ \varphi(\varphi(p)) x mod φ(φ(p))
p不停地变 φ ( p ) \varphi(p) φ(p),显然是不断减小的
显然这是一个递归的过程,那么到什么时候结束捏?
——当p=1的时候,显然所有的数模1都是0,然后再回溯上去

OK,完事
如果想要尝试这道题,你可以戳我(略有区别,它的a永远等于2)


参考:
https://www.cnblogs.com/wangxiaodai/p/9758242.html
https://blog.csdn.net/qq9764312/article/details/79616041
https://zhuanlan.zhihu.com/p/31510871
https://blog.csdn.net/hzj1054689699/article/details/80693756
https://blog.csdn.net/summonlight/article/details/51967425
https://www.cnblogs.com/handsomecui/p/4755455.html

于HG机房&TJQ高层小区

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值