数论基础

群友的问题

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

快速幂

关键在于拆分 2 22 = 2 16 + 4 + 2 = 2 16 × 2 4 × 2 2 2^{22}=2^{16+4+2}=2^{16} \times 2^4 \times 2^2 222=216+4+2=216×24×22

10进制快速幂: 高精次幂的解决方案

数论基础

取余 % 向下取整

取模   m o d   \bmod mod 向0取整
取模性质: a   o p t   b ( m o d p ) = ( a ( m o d p )   o p t   b ( m o d p ) ) ( m o d p ) , o p t = + , − , × , o p t ≠ / a\,opt\,b\pmod p=(a\pmod p\,opt\,b\pmod p)\pmod p,opt=+,-,\times,opt\ne/ aoptb(modp)=(a(modp)optb(modp))(modp),opt=+,,×,opt=/
a n ( m o d p ) = ( a ( m o d p ) ) n ) ( m o d p ) a^n\pmod p=(a\pmod p)^n)\pmod p an(modp)=(a(modp))n)(modp)

整除 a ∣ b a \mid b ab
0可以被任意非0整数整除

因数(约数) 默认正因数
遍历所有因数

唯一分解定理 x = ∏ i = 1 k p i a i x = \prod\limits_{i=1}^{k}p_{i}^{a_i} x=i=1kpiai
分解质因数

因数个数 f ( x ) = ∏ i = 1 k ( a i + 1 ) f(x)=\prod\limits_{i=1}^{k}(a_i+1) f(x)=i=1k(ai+1)

因数个数上界估计: f ( x ) ≪ x f(x) \ll \sqrt{x} f(x)x

同余

a m o d    p = b a \mod p = b amodp=b,称 p p p模数 a a a 同余于 b b b p p p ,记为 a ≡ b ( m o d p ) a \equiv b \pmod{p} ab(modp)
同余的性质

  • 同余是等价关系,具有:
    • 自反性: a ≡ a ( m o d p ) a \equiv a \pmod{p} aa(modp)
    • 对称性: a ≡ b ( m o d p )    ⟺    b ≡ a ( m o d p ) a \equiv b \pmod{p} \iff b \equiv a \pmod{p} ab(modp)ba(modp)
    • 传递性: a ≡ b ( m o d p ) a \equiv b \pmod{p} ab(modp) b ≡ c ( m o d p )    ⟹    a ≡ c ( m o d p ) b \equiv c \pmod{p} \implies a \equiv c \pmod{p} bc(modp)ac(modp)
  • 线性运算: 若 a , b , c , d ∈ Z ,   p ∈ N + ,   a ≡ b ( m o d p ) ,   c ≡ d ( m o d p ) a,b,c,d \in \mathbb{Z},\ p \in \mathbb{N^+},\ a \equiv b \pmod{p},\ c \equiv d \pmod{p} a,b,c,dZ, pN+, ab(modp), cd(modp),则有:
    • a ± c ≡ b ± d ( m o d p ) a \pm c \equiv b \pm d \pmod{p} a±cb±d(modp)
    • a × c ≡ b × d ( m o d p ) a \times c \equiv b \times d \pmod{p} a×cb×d(modp)
  • a , b ∈ Z ,   p , q ∈ N + ,   a ≡ b ( m o d p ) a,b \in \mathbb{Z},\ p,q \in \mathbb{N^+},\ a \equiv b \pmod{p} a,bZ, p,qN+, ab(modp),则有 a q ≡ b q ( m o d p q ) aq \equiv bq \pmod{pq} aqbq(modpq) a q ≡ b q ( m o d p ) aq \equiv bq \pmod{p} aqbq(modp)
  • a , b ∈ Z ,   p , q ∈ N + ,   a ≡ b ( m o d p q ) a,b \in \mathbb{Z},\ p,q \in \mathbb{N^+},\ a \equiv b \pmod{pq} a,bZ, p,qN+, ab(modpq),则有 a ≡ b ( m o d p ) a \equiv b \pmod{p} ab(modp)
  • a , b ∈ Z ,   p , q ∈ N + ,   ( p , q ) = d a,b \in \mathbb{Z},\ p,q \in \mathbb{N^+},\ (p,q)=d a,bZ, p,qN+, (p,q)=d,则当 a q ≡ b q ( m o d p ) aq \equiv bq \pmod{p} aqbq(modp) 成立时,有 a ≡ b ( m o d p d ) a \equiv b \pmod{\dfrac{p}{d}} ab(moddp)
  • a , b ∈ Z ,   p ∈ N + a,b \in \mathbb{Z},\ p \in \mathbb{N^+} a,bZ, pN+,令 C ( x , y ) C(x,y) C(x,y) 表示求 x x x y y y 的公因数集合,则当 a ≡ b ( m o d p ) a \equiv b \pmod{p} ab(modp) 成立时有 C ( a , p ) = C ( b , p ) C(a,p)=C(b,p) C(a,p)=C(b,p)

数论分块

数论分块是在有两个嵌套求和时 利用*富比尼(Fubini)定理*** 交换两个求和顺序,快速计算内层求和或分块加速外层求和从而达到加速求解的思想
因数个数前缀和 ∑ i = 1 n ∑ d ∣ i 1 = ∑ i = 1 n ∑ j = 1 n [ j ∣ i ] = ∑ j = 1 n ∑ i = 1 n [ j ∣ i ] \sum\limits_{i=1}^{n}\sum\limits_{d|i}1=\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}[j \mid i]=\sum\limits_{j=1}^{n}\sum\limits_{i=1}^{n}[j \mid i] i=1ndi1=i=1nj=1n[ji]=j=1ni=1n[ji]
P1403 [AHOI2005] 约数研究

因数和前缀和 ∑ i = 1 n ∑ d ∣ i d \sum\limits_{i=1}^{n}\sum\limits_{d \mid i}d i=1ndid
P2424 约数和

余数前缀和 ∑ i = 1 n ( k m o d    i ) \sum\limits_{i=1}^{n}(k \mod i) i=1n(kmodi)
P2261 [CQOI2007] 余数求和

最大公因数

辗转相除法(欧几里得算法): g c d ( a , b ) = g c d ( b , a   m o d   b ) gcd(a,b)=gcd(b,a\ mod\ b) gcd(a,b)=gcd(b,a mod b)
定义 g c d ( a , 0 ) = a gcd(a,0)=a gcd(a,0)=a
复杂度 O ( l o g ( m a x { a , b } ) ) O(log(max\{a,b\})) O(log(max{a,b}))

g c d ( a , b ) = 1 gcd(a,b)=1 gcd(a,b)=1 表示 a a a b b b 互质
互质即为唯一分解形式中没有相等的质因子

证明:
充分性: 令 d ∣ a d \mid a da d ∣ b d \mid b db,有 a = x d a=xd a=xd b = y d b=yd b=yd,又因 a m o d    b = a − z b = ( x − y z ) d a\mod b = a - zb = (x-yz)d amodb=azb=(xyz)d
必要性: 令 d ∣ b d \mid b db d ∣ ( a m o d    b ) d \mid (a \mod b) d(amodb),有 b = y d b=yd b=yd ( a m o d    b ) = a − z b = x d (a \mod b) = a-zb=xd (amodb)=azb=xd 可得 a = z b + x d = ( x + y z ) d a = zb+xd=(x+yz)d a=zb+xd=(x+yz)d
发现 ( a , b ) (a, b) (a,b) 的公因数即为 ( b , a m o d    b ) (b,a \mod b) (b,amodb) 的公因数,反之亦然,得证

线性同余方程

a x ≡ d ( m o d b ) ax \equiv d \pmod{b} axd(modb) x ∈ [ 0 , b − 1 ] x \in [0,b-1] x[0,b1]
意义为求解满足 a x m o d    b = d m o d    b ax \mod b = d \mod b axmodb=dmodb整数 x x x

裴蜀定理(Bezout)
( a , b ) = d (a,b)=d (a,b)=d,则一定存在整数 x x x y y y 满足 a x + b y = d ax+by=d ax+by=d d d d 是可以得到的最小的整数
证明
存在: 欧几里得算法展开
最小: d ∣ a d \mid a da d ∣ b d \mid b db 所以 d ∣ ( a x + b y ) d \mid (ax+by) d(ax+by)
a x ≡ d ( m o d b ) a x m o d    b = d a x = b y + d a x − b y = d ax \equiv d \pmod{b} \ ax \mod b = d \ ax=by+d \ ax-by=d axd(modb)axmodb=dax=by+daxby=d
有解的条件

扩展欧几里得算法
证明: 数学归纳法

( a , b ) = 1 (a,b)=1 (a,b)=1 时通解为: { x ′ = x + k b y ′ = y − k a \left\{x=x+kby=yka\right. {x=x+kby=yka
解的个数: 有解时个数为 ( a , b ) (a,b) (a,b)
P5656 【模板】二元一次不定方程 (exgcd)

逆元

a x ≡ 1 ( m o d b ) ax \equiv 1 \pmod{b} ax1(modb) 有解时, x x x a a a 在模 b b b 下的逆元
注意到此时有解的条件为 ( a , b ) = 1 (a,b)=1 (a,b)=1 即互质,所以逆元唯一

中国剩余定理

求解线性同余方程组:
{ x ≡ a 1 ( m o d p 1 ) ⋮ ⋮ x ≡ a n ( m o d p n ) \left\{ xa1(modp1)xan(modpn) \right. xxa1(modp1)an(modpn)
其中 p 1 … p n p_1 \dots p_n p1pn 两两互质
过程

  1. 计算 P = ∏ i = 1 n p i P=\prod\limits_{i=1}^{n}p_i P=i=1npi
  2. 对于第 i i i 个方程:
    1. 计算 P i = P p i P_i=\dfrac{P}{p_i} Pi=piP
    2. 计算 P i P_i Pi 在模 p i p_i pi 下的逆元 P i − 1 P_i^{-1} Pi1
    3. 计算 A i = a i P i P i − 1 A_i=a_iP_iP_i^{-1} Ai=aiPiPi1
  3. 可得方程组在模 P P P 下的解为 x = ∑ i = 1 n A i ( m o d P ) x=\sum\limits_{i=1}^{n}A_i \pmod{P} x=i=1nAi(modP)

证明
首先对于模 p i p_i pi,有 x m o d    p i = ∑ i = 1 n ( ( A i m o d    P ) m o d    p i ) x \mod p_i=\sum\limits_{i=1}^{n}((A_i \mod P) \mod p_i) xmodpi=i=1n((AimodP)modpi)
c = A j m o d    P c=A_j \mod P c=AjmodP,有
KaTeX parse error: No such environment: flalign at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲}̲ P &…
i ≠ j i \ne j i=j 时显然 A j m o d    p i = 0 A_j \mod p_i=0 Ajmodpi=0,当 i = j i=j i=j 时显然 A j m o d    p i = a i A_j \mod p_i = a_i Ajmodpi=ai
P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪

扩展中国剩余定理

扩展中国剩余定理不要求模数两两互质,因为扩展中国剩余定理是基于扩展欧几里得算法求解的
使用扩展欧几里得算法可以将两个同余式合并为一个:
{ x ≡ a 1 ( m o d p 1 ) x ≡ a 2 ( m o d p 2 ) ⋮ ⋮ \left\{xa1(modp1)xa2(modp2)\right. xxa1(modp1)a2(modp2)
x = p 1 k 1 + a 1 = p 2 k 2 + a 2 x=p_1k_1+a_1=p_2k_2+a_2 x=p1k1+a1=p2k2+a2
移项后可得 p 1 k 1 − p 2 k 2 = a 2 − a 1 p_1k_1-p_2k_2=a_2-a_1 p1k1p2k2=a2a1,为二元一次不定方程的形式,此时当 d = ( p 1 , p 2 ) ∣ ( a 2 − a 1 ) d=(p_1,p_2) \mid (a_2-a_1) d=(p1,p2)(a2a1) 时有解
解得一组解 k 1 ′ k_1^\prime k1 k 2 ′ k_2^\prime k2 后得到通解:
{ k 1 = k 1 ′ + k p 2 d k 2 = k 2 ′ − k p 1 d \left\{k1=k1+kp2dk2=k2kp1d\right. k1=k1+kdp2k2=k2kdp1
k 1 k_1 k1 带入式子可得 x = p 1 ( k 1 ′ + k p 2 d ) + a 1 = [ p 1 , p 2 ] k + p 1 k 1 ′ + a 1 x=p_1(k_1^\prime+k\dfrac{p_2}{d})+a_1=[p_1,p_2]k+p_1k_1^\prime+a_1 x=p1(k1+kdp2)+a1=[p1,p2]k+p1k1+a1
此时令 [ p 1 , p 2 ] [p_1,p_2] [p1,p2] 为新的 p p p p 1 k 1 ′ + a 1 p_1k_1^\prime+a_1 p1k1+a1 为新的 a a a 得到一个同余式 x ≡ a ( m o d p ) x \equiv a \pmod{p} xa(modp) 继续和其他同余式合并
P4777 【模板】扩展中国剩余定理(EXCRT)

质数筛

质数: 质数计数函数的近似解为 π ( x ) ∼ x ln ⁡ ( x ) \pi(x) \sim \dfrac{x}{\ln(x)} π(x)ln(x)x

埃拉托斯特尼筛: n l o g ( l o g ( n ) ) nlog(log(n)) nlog(log(n))
线性筛: 每个非质数只判定一次
P3383 【模板】线性筛素数

积性函数: 定义域在 N + \mathbb{N}^+ N+ 的数论函数 f ( x ) f(x) f(x) 满足 ∀ ( x , y ) = 1 \forall (x,y)=1 (x,y)=1 都有 f ( x y ) = f ( x ) f ( y ) f(xy)=f(x)f(y) f(xy)=f(x)f(y)
性质:

  • f ( x ) f(x) f(x) g ( n ) g(n) g(n) 都是积性函数,则 h ( n ) = f ( n ) g ( n ) h(n)=f(n)g(n) h(n)=f(n)g(n) 也是积性函数
  • f ( n ) f(n) f(n) 是积性函数,则 g ( n ) = ∑ d ∣ n f ( d ) g(n)=\sum\limits_{d \mid n}f(d) g(n)=dnf(d) 也是积性函数
  • 任何积性函数都可以用线性筛在线性复杂度内求解前 n n n 项,时间复杂度为 O ( n × c ) O(n \times c) O(n×c),其中 c c c 是对任意质数 p p p 和非负整数 k k k ,求解 f ( p k ) f(p^k) f(pk) 的时间复杂度

加性函数

P3811 【模板】模意义下的乘法逆元

欧拉函数

定义欧拉函数 φ ( n ) \varphi(n) φ(n) 为小于等于 n n n 且与 n n n 互质的数的个数

  • 欧拉函数是积性函数
    证明
    假设 ( x , y ) = 1 (x,y)=1 (x,y)=1 ,令 a i , j = x i + j a_{i,j}=xi+j ai,j=xi+j ,可以发现对于 j j j 相等的某一列,这一列中所有数模 x x x 的结果相等
    而对于前 x x x 列模 x x x 的结果构成了 x x x完全剩余系,因此有 φ ( x ) \varphi(x) φ(x) 列与 x x x 互质
    对于这些列中的每一列,前 y y y 行模 y y y 的结果也构成了 y y y完全剩余系,因此每一列都有 φ ( y ) \varphi(y) φ(y) 个数与 y y y 互质
    所以与 x y xy xy 互质的数有 φ ( x ) φ ( y ) \varphi(x)\varphi(y) φ(x)φ(y) 个,即 φ ( x y ) = φ ( x ) φ ( y ) \varphi(xy)=\varphi(x)\varphi(y) φ(xy)=φ(x)φ(y)
  • 对于任意 n n n 的唯一分解形式 n = ∏ i = 1 k p i a i n=\prod\limits_{i=1}^{k}p_i^{a_i} n=i=1kpiai ,有 φ ( n ) = n ∏ i = 1 k p i − 1 p i \varphi(n)=n \prod\limits_{i=1}^{k} \frac{p_i-1}{p_i} φ(n)=ni=1kpipi1
    证明
    对于任意质数 p p p 和非负整数 k k k,都有 φ ( p k ) = p k p − 1 p \varphi(p^k)=p^k\dfrac{p-1}{p} φ(pk)=pkpp1
    任意不相等的质数 p p p q q q,和任意非负整数 x x x y y y ,都有 ( p x , q y ) = 1 (p^x,q^y)=1 (px,qy)=1
    因此 φ ( p x q y ) = φ ( p x ) φ ( q y ) \varphi(p^xq^y)=\varphi(p^x)\varphi(q^y) φ(pxqy)=φ(px)φ(qy)
  • n = ∑ d ∣ n φ ( d ) n=\sum\limits_{d \mid n}\varphi(d) n=dnφ(d)
    证明
    首先可以得到 n = ∑ i = 1 n ∑ d = 1 n [ ( n , i ) = d ] n=\sum\limits_{i=1}^{n}\sum\limits_{d=1}^{n}[(n,i)=d] n=i=1nd=1n[(n,i)=d]
    可以发现当 ( n , i ) = d (n,i)=d (n,i)=d d ∣ n d \mid n dn,因此上式可改为 n = ∑ i = 1 n ∑ d ∣ n [ ( n , i ) = d ] n=\sum\limits_{i=1}^{n}\sum\limits_{d \mid n}[(n,i)=d] n=i=1ndn[(n,i)=d]
    交换求和顺序后发现 ∑ i = 1 n [ ( n , i ) = d ] \sum\limits_{i=1}^{n}[(n,i)=d] i=1n[(n,i)=d],即满足 ( n , i ) = d (n,i)=d (n,i)=d i i i 的个数
    ( n , i ) = d (n,i)=d (n,i)=d ,可以得到 ( n d , i d ) = 1 (\frac{n}{d},\frac{i}{d})=1 (dn,di)=1,即上式为与 n d \frac{n}{d} dn 互质的 i d \frac{i}{d} di 的个数,也就是 φ ( n d ) \varphi(\frac{n}{d}) φ(dn)
    注意到 n d \frac{n}{d} dn d d d 具有对称性,即 ∑ d ∣ n φ ( n d ) = ∑ d ∣ n φ ( d ) \sum\limits_{d \mid n}\varphi(\frac{n}{d})=\sum\limits_{d \mid n}\varphi(d) dnφ(dn)=dnφ(d)
  • ∀ n > 2 \forall n > 2 n>2,所有小于 n n n 且与 n n n 互质的数的和为 n φ ( n ) 2 \dfrac{n\varphi(n)}{2} 2nφ(n)
    证明
    引理1: ( n , i ) = ( n , n − i ) (n,i)=(n,n-i) (n,i)=(n,ni)
    引理2: ∀ n > 3 \forall n > 3 n>3 φ ( n ) \varphi(n) φ(n) 为偶数
    引理1可得,与小于 n n n 且与 n n n 互质的数总是成对出现,即 i i i n − i n-i ni,且每一对的和都为 n n n,再由引理2可得不存在 n − i = i n-i=i ni=i,得证

反向证明: 容斥原理

对于一个值的欧拉函数,分解质因数后用公式求解即可

线性筛求解欧拉函数
由于欧拉函数是积性函数,因此可以用线性筛快速求解前 n n n
p p p为任意质数,当 n m o d    p ≠ 0 n \mod p \ne 0 nmodp=0 φ ( n p ) = φ ( n ) p \varphi(np)=\varphi(n)p φ(np)=φ(n)p,当 n m o d    p = 0 n \mod p = 0 nmodp=0 时, φ ( n p ) = φ ( n ) φ ( p ) \varphi(np)=\varphi(n)\varphi(p) φ(np)=φ(n)φ(p)

欧拉定理

( a , p ) = 1 (a,p)=1 (a,p)=1 ,则有 a φ ( p ) ≡ 1 ( m o d p ) a^{\varphi(p)} \equiv 1 \pmod{p} aφ(p)1(modp)
证明
φ \varphi φ 的定义可得,与 p p p 互质的数有 φ ( p ) \varphi(p) φ(p) 个,则分别选取这些数,记为 r 1 … r φ ( p ) r_1 \dots r_{\varphi(p)} r1rφ(p),易得这些数都小于 p p p 且不相等
将这些数分别乘 a a a 得到 a r 1 … a r φ ( p ) ar_1\dots ar_{\varphi(p)} ar1arφ(p),易得这些数也都与 p p p 互质且不相等,因此这些数模 p p p 之后也都与 p p p 互质且不想等
可以得到 ∏ i = 1 φ ( p ) a r i = a φ ( p ) ∏ i = 1 φ ( p ) r i ≡ ∏ i = 1 φ ( p ) r i ( m o d p ) \prod\limits_{i=1}^{\varphi(p)}ar_i=a^{\varphi(p)}\prod\limits_{i=1}^{\varphi(p)}r_i \equiv \prod\limits_{i=1}^{\varphi(p)}r_i \pmod{p} i=1φ(p)ari=aφ(p)i=1φ(p)rii=1φ(p)ri(modp)
等式两边约去求积后得到 a φ ( p ) ≡ 1 ( m o d p ) a^{\varphi(p)} \equiv 1 \pmod{p} aφ(p)1(modp)

扩展欧拉定理
a n ≡ { a n , n < φ ( p ) a ( n m o d    φ ( p ) ) + φ ( p ) , n ≥ φ ( p ) ( m o d p ) a^n \equiv {an,n<φ(p)a(nmodφ(p))+φ(p),nφ(p) \pmod{p} an{ana(nmodφ(p))+φ(p),n<φ(p),nφ(p)(modp)
证明
首先证明 a ∈ P a \in \mathbb{P} aP 时上式成立
( a , p ) = 1 (a,p)=1 (a,p)=1 时由欧拉定理可得成立
( a , p ) ≠ 1 (a,p) \ne 1 (a,p)=1 时,因为 a a a 为质数,所以有 a ∣ p a \mid p ap,令 p = a r p ′ p=a^rp^\prime p=arp
因为 ( a , p ′ ) = 1 (a,p^\prime)=1 (a,p)=1,所以有 a φ ( p ′ ) ≡ 1 ( m o d p ′ ) a^{\varphi(p^\prime)} \equiv 1 \pmod{p^\prime} aφ(p)1(modp)
同时,由互质可得 φ ( a r p ′ ) = φ ( a r ) φ ( p ′ ) \varphi(a^{r}p^\prime)=\varphi(a^r)\varphi(p^\prime) φ(arp)=φ(ar)φ(p),因此有 a φ ( a r ) φ ( p ′ ) = a φ ( p ) ≡ 1 ( m o d p ′ ) a^{\varphi(a^r)\varphi(p^\prime)}=a^{\varphi(p)} \equiv 1 \pmod{p^\prime} aφ(ar)φ(p)=aφ(p)1(modp)
由同余的性质可得到 a r + φ ( p ) ≡ a r ( m o d p ) a^{r+\varphi(p)} \equiv a^r \pmod{p} ar+φ(p)ar(modp)
r r r a a a 在模 p p p 下求幂时进入循环之前的长度
又因 n ≥ φ ( p ) ≥ r n \ge \varphi(p) \ge r nφ(p)r,所以有 a n = a n − r a r ≡ a n − r a r + φ ( p ) ≡ a n + φ ( p ) ( m o d p ) a^n=a^{n-r}a^{r} \equiv a^{n-r}a^{r+\varphi(p)} \equiv a^{n + \varphi(p)} \pmod{p} an=anraranrar+φ(p)an+φ(p)(modp)
只要保证指数 n ′ n^\prime n 满足 n ′ ≥ φ ( p ) n^\prime \ge \varphi(p) nφ(p) n ′ ≡ n ( m o d φ ( p ) ) n^\prime \equiv n \pmod{\varphi(p)} nn(modφ(p)),就有 a n ′ ≡ a n ( m o d p ) a^{n^\prime} \equiv a^n \pmod{p} anan(modp),则此时满足条件的 n ′ n^\prime n 最小为 ( n m o d    φ ( p ) ) + φ ( p ) (n \mod \varphi(p)) + \varphi(p) (nmodφ(p))+φ(p)
即,对任意质数 q q q,都有 q n ≡ q ( n m o d    φ ( p ) ) + φ ( p ) ( m o d p ) q^n \equiv q^{(n \mod \varphi(p))+\varphi(p)} \pmod{p} qnq(nmodφ(p))+φ(p)(modp)
则对任意非负整数 k k k 都有 ( q k ) n = ( q n ) k ≡ ( q ( n m o d    φ ( p ) ) + φ ( p ) ) k = ( q k ) ( n m o d    φ ( p ) ) + φ ( p ) ( m o d p ) (q^k)^n = (q^n)^k \equiv (q^{(n \mod \varphi(p))+\varphi(p)})^k=(q^k)^{(n \mod \varphi(p))+\varphi(p)} \pmod{p} (qk)n=(qn)k(q(nmodφ(p))+φ(p))k=(qk)(nmodφ(p))+φ(p)(modp)
此时,对任意非负整数 a a a,假设其唯一分解形式为 ∏ i = 1 k q i r i \prod\limits_{i=1}^{k}q_i^{r_i} i=1kqiri
可以得到 a n = ∏ i = 1 k q i r i n ≡ ∏ i = 1 k q r i ( ( n m o d    φ ( p ) ) + φ ( p ) ) = a ( n m o d    φ ( p ) ) + φ ( p ) ( m o d p ) a^n=\prod\limits_{i=1}^{k}q_i^{r_in} \equiv \prod\limits_{i=1}^{k}q^{r_i((n \mod \varphi(p))+\varphi(p))}=a^{(n \mod \varphi(p))+\varphi(p)} \pmod{p} an=i=1kqirini=1kqri((nmodφ(p))+φ(p))=a(nmodφ(p))+φ(p)(modp)
P1405 苦恼的小明

费马小定理
对任意质数 p p p ,若 ( a , p ) = 1 (a,p)=1 (a,p)=1,则有 a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1 \pmod{p} ap11(modp)

用欧拉定理/费马小定理求逆元

素性测试

费马素性测试: 利用费马小定理的逆定理随机测试

费马素性测试可能测不出的非质数
伪素数: 若存在 a a a 使得 a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1 \pmod{p} ap11(modp) 成立,则称 p p p 为以 a a a 为基底的伪素数
最小的伪素数是 341 = 11 × 31 341=11 \times 31 341=11×31,此时有 2 340 ≡ 1 ( m o d 341 ) 2^{340} \equiv 1 \pmod{341} 23401(mod341)

费马素性测试一定测不出的非质数
卡迈克尔(Carmichael)数: 对于非质数 p p p,若对任意满足 ( a . p ) = 1 (a.p)=1 (a.p)=1 a a a 都有 a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1 \pmod{p} ap11(modp)
Carmichael数至少有三个质因子且每个质因子只有一个

米勒拉宾(Miller–Rabin)素性测试
二次探测定理
p p p 为质数,则满足 x 2 ≡ 1 ( m o d p ) x^2 \equiv 1 \pmod{p} x21(modp) x x x 只有 1 1 1 p − 1 p-1 p1,这样的 x x x 称为模 p p p 下的平凡根
证明
x 2 ≡ 1 ( m o d p )    ⟹    ( x + 1 ) ( x − 1 ) ≡ 0 ( m o d p )    ⟹    p ∣ ( x + 1 ) ( x − 1 ) x^2 \equiv 1 \pmod{p} \implies (x+1)(x-1) \equiv 0 \pmod{p} \implies p \mid (x+1)(x-1) x21(modp)(x+1)(x1)0(modp)p(x+1)(x1)
因为 p p p 是质数,所以只能得到 p ∣ ( x + 1 ) p \mid (x+1) p(x+1) p ∣ ( x − 1 ) p \mid (x-1) p(x1)
p ∣ ( x + 1 ) p \mid (x+1) p(x+1) x = p − 1 x = p-1 x=p1
p ∣ ( x − 1 ) p \mid (x-1) p(x1) x = 1 x = 1 x=1

逆否定理:
若对于 x 2 ≡ 1 ( m o d p ) x^2 \equiv 1 \pmod{p} x21(modp) 存在非平凡根,则 p p p 一定不是质数

过程
p = 2 p=2 p=2 则判断是素数
否则随机在 [ 2 , p − 1 ] [2,p-1] [2,p1] 范围内选取 a a a,并进行下述测试:
首先令 p − 1 = 2 r p 1 p-1=2^rp_1 p1=2rp1 2 ∤ p 1 2 \nmid p_1 2p1,则有 a n − 1 = ( a p 1 ) 2 r a^{n-1} = (a^{p_1})^{2^r} an1=(ap1)2r
于是首先计算出 b ≡ a p 1 ( m o d p ) b \equiv a^{p_1} \pmod{p} bap1(modp),然后对 b b b 进行最多 r r r 次平方操作
若在平方的过程中发现非平凡根则一定不是质数
若在平方的过程中出现 b = p − 1 b=p-1 b=p1,则这个 b b b 为平凡根,可以结束平方过程
若成功结束平方,则用费马测试进行判断

错误率
每次测试会使错误率变为原来的 1 4 \dfrac{1}{4} 41,所以若进行 n n n 次测试则错误率为 1 4 n \dfrac{1}{4^n} 4n1

a a a 的选取
对于 unsigned int 范围内的整数,可以使用 { 2 , 7 , 61 } \{2,7,61\} {2,7,61} 三个数作为 a a a 进行测试就可以确定素性
对于 unsigned long long 范围内的整数,可以使用 { 2 , 325 , 9375 , 28178 , 450775 , 9780504 , 1795265022 } \{2,325,9375,28178,450775,9780504,1795265022\} {2,325,9375,28178,450775,9780504,1795265022} 进行最多7次测试就可以确定素性
也可以使用 { 2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29 , 31 , 37 } \{2,3,5,7,11,13,17,19,23,29,31,37\} {2,3,5,7,11,13,17,19,23,29,31,37} (前12个质数)进行测试,但此时需要对每个数都进行测试,不能只选择小于 n n n

卢卡斯定理

p = P p=\mathbb{P} p=P 时有 C n m ≡ C ⌊ n / p ⌋ ⌊ m / p ⌋ C n m o d    p m m o d    p ( m o d p ) C_{n}^{m}\equiv C_{\lfloor n/p \rfloor}^{\lfloor m/p \rfloor}C_{n \mod p}^{m \mod p}\pmod{p} CnmCn/pm/pCnmodpmmodp(modp)
证明
n = k p + c n=kp+c n=kp+c m = i p + j m=ip+j m=ip+j,则有
KaTeX parse error: No such environment: flalign at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲}̲ (1+x)^n & = (…
其中 ( 1 + x ) p = ∑ i = 0 p C p i x i (1+x)^p=\sum\limits_{i=0}^{p}C_{p}^{i}x^i (1+x)p=i=0pCpixi,注意到 C p i = p ! i ! ( p − i ) ! C_{p}^{i}=\dfrac{p!}{i!(p-i)!} Cpi=i!(pi)!p! 中只有 i = 0 i=0 i=0 i = p i=p i=p 时不包含因子 p p p,因此只有当 i = 0 i=0 i=0 p p p C p i m o d    p ≠ 0 C_{p}^{i} \mod{p} \ne 0 Cpimodp=0
因此 ( 1 + x ) p = ∑ i = 0 p C p i x i ≡ C p 0 x 0 + C p p x p = ( 1 + x p ) ( m o d p ) (1+x)^p=\sum\limits_{i=0}^{p}C_{p}^{i}x^i \equiv C_{p}^{0}x^0+C_{p}^{p}x^p=(1+x^p) \pmod{p} (1+x)p=i=0pCpixiCp0x0+Cppxp=(1+xp)(modp)
于是上式转化为
KaTeX parse error: No such environment: flalign at position 8: \begin{̲f̲l̲a̲l̲i̲g̲n̲}̲ ((1+x)^p)^k(1+…
∑ i = 0 k ∑ j = 0 c C k i C c j x i p + j ≡ ∑ m = 0 k p + c C k p + c m x m ( m o d p ) \sum\limits_{i=0}^{k}\sum\limits_{j=0}^{c}C_{k}^{i}C_{c}^{j}x^{ip+j} \equiv \sum\limits_{m=0}^{kp+c}C_{kp+c}^{m}x^m \pmod{p} i=0kj=0cCkiCcjxip+jm=0kp+cCkp+cmxm(modp)
其中同余号左右的项一一对应,于是对于第 m = i p + j m=ip+j m=ip+j 项,有 C k i C c j x i p + j ≡ C k p + c m x m ( m o d p ) C_{k}^{i}C_{c}^{j}x^{ip+j} \equiv C_{kp+c}^{m}x^m \pmod{p} CkiCcjxip+jCkp+cmxm(modp),约去 x m x^m xm 后得到 C k i C c j ≡ C k p + c i p + j ( m o d p ) C_{k}^{i}C_{c}^{j} \equiv C_{kp+c}^{ip+j} \pmod{p} CkiCcjCkp+cip+j(modp)
P3807 【模板】卢卡斯定理/Lucas 定理

矩阵

矩阵(Matrix) 是一个二维数组
[ 1 2 1 2 1 2 1 2 1 ] \left[ 121212121 \right] 121212121
矩阵来源于线性方程组:
{ 5 x 1 + 3 x 2 + 2 x 3 = y 1 4 x 1 − 6 x 2 + 3 x 3 = y 2 7 x 1 + 9 x 2 − 8 x 3 = y 3 \left\{ 5x1+3x2+2x3=y14x16x2+3x3=y27x1+9x28x3=y3 \right. 5x1+3x2+2x3=y14x16x2+3x3=y27x1+9x28x3=y3
将该方程组系数提出,即为
[ 5 3 2 4 − 6 3 7 9 − 8 ] \left[ 532463798 \right] 547369238
将系数矩阵与自变量矩阵(向量)相乘得到因变量矩阵
$$
\left[
532 463 798
\right]
\left[
x1 x2 x3
\right]

\left[
y1 y2 y3
\right]
$$
就是线性方程组的矩阵表示形式

一般用 a i , j a_{i,j} ai,j 表示某矩阵第 i i i 行第 j j j 列的元素,比如 a 3 , 2 a_{3,2} a3,2​ 表示第三行第二列的元素

方阵: 方形矩阵
n n n 阶方阵

矩阵运算
加法
数乘
乘法
转置

矩阵快速幂

线性组合

形如 x = ∑ i = 1 n a i x i x=\sum\limits_{i=1}^{n}a_ix_i x=i=1naixi的形式称为 x 1 … x n x_1 \dots x_n x1xn 的线性组合,可以写为两个向量相乘的形式 x = [ a 1 , … , a n ] [ x 1 , … , x n ] T x=[a_1, \dots, a_n][x_1, \dots, x_n]^T x=[a1,,an][x1,,xn]T

矩阵加速线性递推
斐波那契数列 f ( x ) = f ( x − 1 ) + f ( x − 2 ) f(x)=f(x-1)+f(x-2) f(x)=f(x1)+f(x2)
f ( x ) = 2 ( f ( x − 1 ) + f ( x − 2 ) + 1 ) f(x)=2(f(x-1)+f(x-2)+1) f(x)=2(f(x1)+f(x2)+1)
f ( x ) = f ( x − 1 ) + f ( x − 2 ) + x f(x)=f(x-1)+f(x-2)+x f(x)=f(x1)+f(x2)+x

posted @   椰萝Yerosius  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示