超链接:数学合集
瞎BB:破纪录,最长的博客名!(英文题目除外)
先做个预告:
在文章的最后我们要解决一个灰常玄学的问题:求 a a a a ⋅ ⋅ ⋅ m o d p ( 无 穷 多 个 a ) a^{a^{a^{a^{·^{·^{·}}}}}} mod \ p(无穷多个a) aaaa⋅⋅⋅mod p(无穷多个a)
φ ( n ) \varphi(n) φ(n):就是小于等于n的数中与n互质的数的个数
就是 φ ( n ∗ m ) = φ ( n ) ∗ φ ( m ) \varphi(n*m)=\varphi(n)*\varphi(m) φ(n∗m)=φ(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的简化剩余系
你会发现我们如果能证明好下面三个事情就得证了:
一个一个慢慢来:
首先我们从 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(xi∗n,m)=1
然后我们在给 x i ∗ n x_i*n xi∗n加上一个m的倍数 y j ∗ m y_j*m yj∗m,等式依然成立
g c d ( x i ∗ n + y j ∗ m , m ) = 1 ⋯ ① gcd(x_i*n+y_j*m,m)=1 \cdots① gcd(xi∗n+yj∗m,m)=1⋯①
同理(对称一下),我们也可以得到:
g c d ( y j ∗ m + x i ∗ n , n ) = 1 ⋯ ② gcd(y_j*m+x_i*n,n)=1 \cdots② gcd(yj∗m+xi∗n,n)=1⋯②
①和②放在一起看,你会发现: x i ∗ n + y j ∗ m x_i*n+y_j*m xi∗n+yj∗m又和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(xi∗n+yj∗m,mn)=1
得证
也就是任意的 x i ∗ n + y j ∗ m x_i*n+y_j*m xi∗n+yj∗m模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) xi∗n+yj∗m≡xp∗n+yq∗m(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) xi∗n+yj∗m≡xp∗n+yq∗m(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) xi∗n+yj∗m≡xp∗n+yq∗m(mod m)
y j ∗ m y_j*m yj∗m和 y q ∗ m y_q*m yq∗m都是m的倍数,模m都是0,So,扔掉也无所谓:
x i ∗ n ≡ x p ∗ n ( m o d m ) x_i*n\equiv x_p*n(mod\ m) xi∗n≡xp∗n(mod m)
同余号两边同时除掉一个n:
x i ≡ x p ( m o d m ) x_i\equiv x_p(mod\ m) xi≡xp(mod m)
m的简化剩余系中的数都互不相等
哦,那不就是i=p了吗!
同理j=q,得证!
设 z 是mn的简化剩余系的集合的任意某个元素,那么我们现在就是要证明z一定能用 x i ∗ n + y j ∗ m x_i*n+y_j*m xi∗n+yj∗m表示,黑喂狗:
我们都知道 m ∗ x 0 + n ∗ y 0 = g c d ( m , n ) m*x_0+n*y_0=gcd(m,n) m∗x0+n∗y0=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 m∗x0+n∗y0=1 ,然后同时乘个z,于是我们得到了:
m ∗ x 0 ∗ z + n ∗ y 0 ∗ z = z m*x_0*z+n*y_0*z=z m∗x0∗z+n∗y0∗z=z
也就是一定存在整数x,y,满足: m ∗ x + n ∗ y = z m*x+n*y=z m∗x+n∗y=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(m∗x+n∗y,mn)=1
那么下面这个也一定成立:
g c d ( m ∗ x + n ∗ y , m ) = 1 gcd(m*x+n*y,m)=1 gcd(m∗x+n∗y,m)=1
m ∗ x m*x m∗x是m的倍数,So, m ∗ x m*x m∗x对这两个东西的互质毫无贡献,于是乎我们又得到了:
g c d ( n ∗ y , m ) = 1 gcd(n*y,m)=1 gcd(n∗y,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) y≡xi(mod m)
我们再把整个式子都乘个n,我们就有了:
n ∗ y ≡ n ∗ x i ( m o d n m ) ⋯ ① n*y\equiv n*x_i(mod\ nm) \cdots① n∗y≡n∗xi(mod nm)⋯①
同理,我们还有:
m ∗ x ≡ m ∗ y j ( m o d n m ) ⋯ ② m*x\equiv m*y_j(mod\ nm) \cdots② m∗x≡m∗yj(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) m∗x+n∗y≡n∗xi+m∗yi(mod nm)
就是:
z ≡ n ∗ x i + m ∗ y i ( m o d n m ) z\equiv n*x_i+m*y_i(mod\ nm) z≡n∗xi+m∗yi(mod nm)
完美得证!
至此我们终于得到了,欧拉函数的积性o( ̄▽ ̄)ブ
已知小于 p k p^k pk的正整数的有 p k − 1 p^k-1 pk−1个,其中和 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×(pk−1−1),共计 p k − 1 − 1 p^{k-1}-1 pk−1−1个
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)=pk−1−(pk−1−1)=pk−pk−1=(p−1)∗pk−1
我们就来根据性质一和性质二来推导一下:
我们先分解一下质因数:
φ ( 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)=φ(p1k1∗p2k2∗p3k3∗⋯∗psks)
然后再由它的积性,我们得到了:
φ ( 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)=(p1k1−1∗p2k2−1∗p3k3−1∗⋯∗psks−1)∗(p1−1)∗(p2−1)∗(p3−1)∗⋯∗(ps−1)
从右边的每个小括号里拿出一个 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)=(p1k1∗p2k2∗p3k3∗⋯∗psks)∗(1−p11)∗(1−p21)∗(1−p31)∗⋯∗(1−ps1)
也就是说,我们得到了 φ ( 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∗(1−p11)∗(1−p21)∗(1−p31)∗⋯∗(1−ps1)
复杂度 O ( n ) O(\sqrt{n}) O(n)
求欧拉函数还有一种线性筛的做法(戳我)
我们马上进入欧拉定理
先上个欧拉定理(条件是a和n互质):
a φ ( n ) ≡ 1 ( m o d n ) a^{\varphi(n)} \equiv1(mod \ n) aφ(n)≡1(mod n)
黑喂狗:
我们不妨假设小于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. ⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧m1m2m3⋮mφ(n)=a∗x1=a∗x2=a∗x3=a∗xφ(n)
我们管这个m的序列叫集合M
有了集合X和集合M,我们就可以开始了
不过在开始前,我们先要证明两件事情:
一个一个来:
我们用反证法
假设集合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) mi≡mj(mod n)
也就是: m i − m j ≡ 0 ( m o d n ) m_i-m_j \equiv 0(mod \ n) mi−mj≡0(mod n)
代入一下: a ∗ x i − a ∗ x j ≡ 0 ( m o d n ) a*x_i-a*x_j\equiv 0(mod \ n) a∗xi−a∗xj≡0(mod n)
a ∗ ( x i − x j ) ≡ 0 ( m o d n ) a∗(x_i−x_j)\equiv 0(mod \ n) a∗(xi−xj)≡0(mod n)
我们都知道a和n互质(大条件),So:
x i − x j ≡ 0 ( m o d n ) x_i−x_j\equiv 0(mod \ n) xi−xj≡0(mod n)
我们都知道 x i x_i xi和 x j x_j xj都是小于n的不同数,所以 x i − x j x_i−x_j xi−xj一定大于0小于n,So上面那个式子怎么可能成立
得证!
这个比较easy
我们知道: m i = a ∗ x i m_i=a*x_i mi=a∗xi,这个式子里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) m1∗m2∗m3∗⋯∗mφ(n)≡x1∗x2∗x3∗⋯∗xφ(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) a∗x1∗a∗x2∗a∗x3∗⋯∗a∗xφ(n)≡x1∗x2∗x3∗⋯∗xφ(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)∗(x1∗x2∗x3∗⋯∗xφ(n))≡x1∗x2∗x3∗⋯∗xφ(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)∗(x1∗x2∗x3∗⋯∗xφ(n))≡0(mod n)
美滋滋,集合X中的所有数都与n互质,于是乎:
a φ ( n ) − 1 ≡ 0 ( m o d n ) a^{\varphi(n)}-1\equiv 0(mod \ n) aφ(n)−1≡0(mod n)
a φ ( n ) ≡ 1 ( m o d n ) a^{\varphi(n)}\equiv 1(mod \ n) aφ(n)≡1(mod n)
得证
到这里,你一定会问了——“这玩意什么用捏?”
“没用”
“…”
"BUT,我们把欧拉定理转换一下就有用了"
主要可以做两件事情:
咱们一件一件说:
当 p 是 质 数 时 : a p − 1 ≡ 1 ( m o d p ) 当p是质数时:a^{p-1} \equiv1(mod \ p) 当p是质数时:ap−1≡1(mod p)
这……
不就是欧拉定理的特殊情况吗?
你可不要小看这个东西,他可以告诉你n是不是一个质数
“哦哦,我知道了,随便找一个小于n的数a,然后代入到费马小定理里面,看看是不是同余就可以了”
没错,就是这样,但是有一个很尴尬的事情:p为质数是费马小定理的充分不必要条件!
也就是说,对于2<=a
对于一个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的素数检验方法——米勒拉宾素数测试
在讲扩展欧拉定理之前,先试试这个:口算 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=712∗46+3=(712)46∗73
于是乎,就可以使用欧拉定理了
( 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)46∗73≡146∗73(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) ab≡ab 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) ab≡ab 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=p1r1∗p2r2∗p3r3∗⋯∗psrs
如果我们可以证明:对于里面的每个质数 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) pib≡pib mod φ(n)+φ(n)(mod n)
那么也就是我们一定可以得到:
( p i k i ) b ≡ ( p i k i ) b m o d φ ( n ) + φ ( n ) ( m o d n ) ({p_i}^{k_i})^b \equiv ({p_i}^{k_i})^{b\ mod\ \varphi(n)+\varphi(n)}(mod\ n) (piki)b≡(piki)b mod φ(n)+φ(n)(mod n)
然后我们把每个 ( p i k i ) b ({p_i}^{k_i})^b (piki)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) (p1r1∗p2r2∗p3r3∗⋯∗psrs)b≡(p1r1∗p2r2∗p3r3∗⋯∗psrs)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) ab≡ab 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是一个质数) pb≡pb 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=pk∗s(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) pb≡pb 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+k≡pb mod φ(n)+k(mod s∗pk)
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+k≡pb 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)+k≡pk(mod pk∗s)
p φ ( n ) + k ≡ p k ( m o d n ) ⋯ ③ p^{\varphi(n)+k} \equiv p^k(mod\ n)\cdots③ pφ(n)+k≡pk(mod n)⋯③
然后我们有这样的等式:
p b ≡ p b − k ∗ p k ( m o d n ) p^b\equiv p^{b-k}*p^k(mod\ n) pb≡pb−k∗pk(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) pb≡pb+φ(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) pb≡pb mod φ(n)+φ(n)(mod n)
哦,我们得证了!
接下来我来解答文章开头的那个问题:
求 a a a a ⋅ ⋅ ⋅ m o d p ( 无 穷 多 个 a ) 求a^{a^{a^{a^{·^{·^{·}}}}}} mod \ p(无穷多个a) 求aaaa⋅⋅⋅mod p(无穷多个a)
我们不妨令 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) ax≡ax 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)) ax≡ax 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高层小区