数论学习笔记 基础数论(未完成)

##数论相关
本文是一些对基础数论的总结。
###欧几里得 Gcd
定义 g c d ( a , b ) gcd(a,b) gcd(a,b)即求 a a a b b b的最小公因数。
求法:根据 g c d ( a , b ) = g c d ( b , a   m o d   b ) gcd(a,b)=gcd(b,a\bmod b) gcda,b=gcd(b,amodb),递归求解知道 b = 0 b=0 b=0时, g c d ( a , b ) = a gcd(a,b) = a gcd(a,b)=a
时间复杂度: O ( l o g a ) O(loga) O(loga)
证明:每递归两次, b ′ < = ⌊ b 2 ⌋ b'<= \lfloor \frac{b}{2} \rfloor b<=2b,所以最多只会进行 l o g log log次操作。

k = ⌊ a b ⌋ , r = a   m o d   b k = \lfloor \frac{a}{b} \rfloor, r = a \bmod b k=ba,r=amodb
r = 0 r = 0 r=0
g c d ( a , b ) = g c d ( b , 0 ) = b gcd(a, b) = gcd(b,0) = b gcd(a,b)=gcd(b,0)=b
正确。

r > 0 r > 0 r>0时,设 d = g c d ( a , b ) , a = x d , b = y d d = gcd(a,b),a=xd,b=yd d=gcd(a,b),a=xd,b=yd
r = a − k b = x d − k y d = ( x − k y ) d r=a-kb=xd-kyd=(x-ky)d r=akb=xdkyd=(xky)d
可知 d d d也是 r r r的因数,即 g c d ( b , r ) = d ′ d gcd(b,r)=d'd gcd(b,r)=dd。接下来就是要证明 d ′ = 1 d'=1 d=1 g c d ( y , x − k y ) = 1 gcd(y,x-ky) = 1 gcd(y,xky)=1。我们用反证法,设 x − k y = n d ′ , y = m d ′ , d ′ > 1 x-ky=nd',y=md',d'>1 xky=nd,y=md,d>1
x = k y + n d ′ = k m d ′ + n d ′ = ( k m + n ) d ′ a = x d = ( k m + n ) d ′ d b = y d = m d d ′ x=ky+nd'=kmd'+nd'=(km+n)d'\\ a=xd=(km+n)d'd\\ b=yd=mdd' x=ky+nd=kmd+nd=(km+n)da=xd=(km+n)ddb=yd=mdd
那 么 g c d ( a , b ) = d d ′ ( d ′ > 1 ) 那 么 与 前 提 g c d ( a , b ) = d 不 符 那么gcd(a,b)=dd'(d'>1)那么与前提gcd(a,b)=d不符 gcd(a,b)=dd(d>1)gcd(a,b)=d
所以 d ′ = 1 , g c d ( a , b ) = g c d ( b , r ) 。 d'=1,gcd(a,b)=gcd(b,r)。 d=1,gcd(a,b)=gcd(b,r)

∗ * g c d ( n , m ) > 1 gcd(n,m)>1 gcd(n,m)>1时, a b ≡ a b   m o d   φ ( m ) + φ ( m ) (   m o d   m ) a^b\equiv a^{b \bmod \varphi(m)+\varphi(m)}(\bmod m) ababmodφ(m)+φ(m)(modm)
###扩展欧几里得 ExGcd
定义:解决一类形如求 a x + b y = c ( a , b , c 已 知 ) ax+by=c(a,b,c已知) ax+by=ca,b,c最小正整数解的问题。
求法:首先方程有解的充要条件是 g c d ( a , b ) ∣ c gcd(a,b)|c gcd(a,b)c,因为 g c d ( a , b ) ∣ a x + b y gcd(a,b)|ax+by gcd(a,b)ax+by。对于求解 x , y x,y x,y我们只需参考去 g c d gcd gcd的方法递归求解。

假设我们要求 a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b)的最小正整数解。
根据
g c d ( a , b ) = g c d ( b , a   m o d   b ) a x + b y = g c d ( a , b ) b x ′ + ( a   m o d   b ) y ′ = g c d ( b , a   m o d   b ) gcd(a,b) = gcd(b, a \bmod b) \\ ax+by = gcd(a,b) \\ bx'+(a \bmod b)y'=gcd(b,a \bmod b) gcd(a,b)=gcd(b,amodb)ax+by=gcd(a,b)bx+(amodb)y=gcd(b,amodb)
可得 a x + b y = b x ′ + ( a   m o d   b ) y ′ ax+by=bx'+(a \bmod b)y' ax+by=bx+(amodb)y,我们化简一下式子:
a x + b y = b x ′ + ( a   m o d   b ) y ′ a x + b y = b x ′ + ( a − [ a b ] ∗ b ) y ′ a x + b y = a y ′ + b x ′ − [ a b ] ∗ b y ′ ax+by=bx'+(a \bmod b)y'\\ ax+by=bx'+(a-[\frac{a}{b}]*b)y'\\ ax+by=ay'+bx'-[\frac{a}{b}]*by' ax+by=bx+(amodb)yax+by=bx+(a[ba]b)yax+by=ay+bx[ba]by
也就是说 x = y ′ , y = x ′ − [ a b ] ∗ y ′ x=y',y=x'-[\frac{a}{b}]*y' x=y,y=x[ba]y,这样我们就可以递归求解,对与边界 b = 0 b=0 b=0的情况显然 x = 1 , y = 0 x=1,y=0 x=1,y=0

对于 a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b)的其他整数解,设为 x ′ , y ′ , g c d ( a , b ) = d , a ′ = a d , b ′ = b d x',y',gcd(a,b)= d,a'=\frac{a}{d},b'=\frac{b}{d} x,y,gcd(a,b)=d,a=da,b=db
a x + b y = a x ′ + b y ′ a ( x − x ′ ) = b ( y ′ − y ) a ′ ( x − x ′ ) = b ′ ( y ′ − y ) ax+by=ax'+by' \\ a(x-x')=b(y'-y)\\ a'(x-x')=b'(y'-y) ax+by=ax+bya(xx)=b(yy)a(xx)=b(yy)
此时 a ′ 与 b ′ a'与b' ab互质,即 b ′ ∣ ( x − x ′ ) , a ′ ∣ ( y ′ − y ) b'|(x-x'),a'|(y'-y) b(xx),a(yy),设 b ′ k = ( x − x ′ ) b'k=(x-x') bk=(xx)那么 a ′ k = ( y ′ − y ) a'k=(y'-y) ak=(yy),也就是说 k k k的每种不同取值就对应这一组整数解,我们可以表达为 x ′ = x + k b ′ , y ′ = y − k a ′ x'=x+kb',y'=y-ka' x=x+kb,y=yka
###类欧几里得
定义:求解形如 ∑ x = 0 n ⌊ a x + b c ⌋ ( a , b , c 已 知 ) \sum^{n}_{x=0} \lfloor\frac{ax+b}{c}\rfloor(a,b,c已知) x=0ncax+b(a,b,c)
求法:我们先设 S d ( n ) = ∑ x = 1 n x d S_d(n)=\sum^{n}_{x=1}x^d Sd(n)=x=1nxd

  1. 如果 a ≥ c a \geq c ac,设 d = ⌊ a c ⌋ d=\lfloor\frac{a}{c}\rfloor d=ca则有
    ∑ x = 0 n ⌊ a x + b c ⌋ = ∑ x = 0 n ( ⌊ ( a % c ) x + b c ⌋ + d ∗ x ) = d ∗ S 1 ( n ) + ∑ x = 0 n ⌊ ( a % c ) x + b c ⌋ \sum^{n}_{x=0} \lfloor\frac{ax+b}{c}\rfloor=\sum^{n}_{x=0}(\lfloor\frac{(a\%c)x+b}{c}\rfloor+d*x)=d*S_1(n)+\sum^{n}_{x=0}\lfloor\frac{(a\%c)x+b}{c}\rfloor x=0ncax+b=x=0n(c(a%c)x+b+dx)=dS1(n)+x=0nc(a%c)x+b

2.如果 b ≥ c b\geq c bc,设 d = ⌊ b c ⌋ d=\lfloor\frac{b}{c}\rfloor d=cb则有
∑ x = 0 n ⌊ a x + b c ⌋ = ∑ x = 0 n ( ⌊ a x + ( b % c ) c ⌋ + d ) = d ∗ S 0 ( n ) + ∑ x = 0 n ( ⌊ a x + ( b % c ) c ⌋ \sum^{n}_{x=0} \lfloor\frac{ax+b}{c}\rfloor=\sum^{n}_{x=0} (\lfloor\frac{ax+(b \% c)}{c}\rfloor +d)=d*S_0(n) +\sum^{n}_{x=0} (\lfloor\frac{ax+(b \% c)}{c}\rfloor x=0ncax+b=x=0n(cax+(b%c)+d)=dS0(n)+x=0n(cax+(b%c)
根据1,2我们把规模为 ( a , b , c , n ) (a,b,c,n) (a,b,c,n)转化为规模为 ( a % c , b % c , c , n ) (a\%c,b\%c,c,n) (a%c,b%c,c,n)

3. a ≥ c , b ≥ c a\geq c,b\geq c ac,bc时,设 M = ⌊ a n + b c ⌋ M=\lfloor\frac{an+b}{c}\rfloor M=can+b
∑ x = 0 n ⌊ a x + b c ⌋ = ∑ x = 0 n ∑ y = 0 M [ y < ⌊ a x + b c ⌋ ] \sum^{n}_{x=0} \lfloor\frac{ax+b}{c}\rfloor=\sum^{n}_{x=0}\sum^{M}_{y=0}[y<\lfloor\frac{ax+b}{c}\rfloor] x=0ncax+b=x=0ny=0M[y<cax+b]
接下来化简一下 y < ⌊ a x + b c ⌋ y<\lfloor\frac{ax+b}{c}\rfloor y<cax+b
c ∗ ( y + 1 ) ≤ a ∗ x + b c ∗ y + c − b ≤ a ∗ x c ∗ y + c − b − 1 < a ∗ x x > ⌊ c ∗ y + c − b − 1 a ⌋ c*(y+1)\leq a*x+b\\ c*y+c-b\leq a*x\\ c*y+c-b-1< a*x\\ x> \lfloor\frac{c*y+c-b-1}{a}\rfloor c(y+1)ax+bcy+cbaxcy+cb1<axx>acy+cb1
原式
= ∑ y = 0 M ∑ x = 0 n [ x > ⌊ c ∗ y + c − b − 1 a ⌋ ] = ∑ y = 0 M ( n − ⌊ c ∗ y + c − b − 1 a ⌋ ) = n ∗ ( M + 1 ) − ∑ y = 0 M ⌊ c ∗ y + c − b − 1 a ⌋ =\sum^{M}_{y=0}\sum^{n}_{x=0}[x> \lfloor\frac{c*y+c-b-1}{a}\rfloor]\\ =\sum^{M}_{y=0}(n- \lfloor\frac{c*y+c-b-1}{a}\rfloor)\\ =n*(M+1)-\sum^{M}_{y=0}\lfloor\frac{c*y+c-b-1}{a}\rfloor\\ =y=0Mx=0n[x>acy+cb1]=y=0M(nacy+cb1)=n(M+1)y=0Macy+cb1
于是问题又从 ( a % c , b % c , c , n ) (a\%c,b\%c,c,n) (a%c,b%c,c,n)转换成了 ( c , c − b % c − 1 , , a % c , M ) (c,c-b\%c-1,,a\%c,M) (c,cb%c1,,a%c,M)
那么我们只需要递归求解就可以了,而规模每次都是取模的,所以和 G c d Gcd Gcd类似,复杂度也是 O ( l o g ) O(log) O(log)的。
###欧拉函数
详细内容戳这里
###模相关
###中国剩余定理
定义:给定 n n n条形如 x ≡ a i (   m o d   m i ) x\equiv a_i( \bmod m_i) xai(modmi)的方程,求解 x x x ( m i 互 质 ) (m_i互质) (mi)
求法:考虑如果 x = ∑ i = 1 n F i x=\sum_{i=1}^n F_i x=i=1nFi,且保证
满 足 { F i   m o d   m i = a i F i   m o d   m j ( j ≠ i ) = 0 \\满足\left\{\begin{matrix} &F_i \bmod m_i=a_i & \\ & F_i \bmod m_j(j\not=i)=0 & \end{matrix}\right. {Fimodmi=aiFimodmj(j=i)=0
那么令 M = ∏ m i M=\prod m_i M=mi,则 F i = M m i ∗ ( M m i ) − 1 ∗ a i F_i=\frac{M}{m_i}*(\frac{M}{m_i})^{-1}*a_i Fi=miM(miM)1ai
证明:显然满足。
###组合数取模
###莫比乌斯函数
定义:设函数
f ( n ) = ∑ d ∣ n g ( d ) f(n)=\sum_{d|n}g(d) f(n)=dng(d)
求法:当 f f f函数已知的情况下可以通过一下函数求的 g g g函数
g ( n ) = ∑ d ∣ n μ ( d ) ∗ f ( n d ) μ ( d ) = { 1 , d = 1 ( − 1 ) k , d = p 1 ∗ p 2 ∗ . . . p k ( p i 为 互 不 相 同 的 质 数 ) 0 , 其 余 g(n)=\sum_{d|n}\mu(d)*f(\frac{n}{d}) \\ \mu(d)=\left\{\begin{matrix} &1, d=1 & \\ & (-1)^k,d=p_1*p_2*...p_k (p_i为互不相同的质数)& \\ & 0,其余 & \end{matrix}\right. g(n)=dnμ(d)f(dn)μ(d)=1,d=1(1)k,d=p1p2...pk(pi)0,
证明:首先, f ( n ) f(n) f(n)肯定包含 g ( n ) g(n) g(n),所以 μ ( 1 ) = 1 \mu(1)=1 μ(1)=1。那么现在就要减去 f ( n ) f(n) f(n)中除了 g ( n ) g(n) g(n)的其他项。这就和容斥原理很像了,考虑减去除掉一个质数的 f f f值,加上除去两个质数的 f f f值…这就是 μ ( d ) \mu(d) μ(d)的第二种情况。其余的 f f f值不用考虑,对应第三种情况。至此,就是最基础的反演。

性质一:对于任意正整数 n n n,有 ∑ d ∣ n μ ( d ) = { 1 , n = 1 0 , n > 1 \sum_{d|n}\mu(d)=\left\{\begin{matrix} & 1,n=1 & \\ & 0,n>1& \end{matrix}\right. dnμ(d)={1,n=10,n>1
证明:对于 n = 1 n=1 n=1的情况,直接就是 μ ( 1 ) \mu(1) μ(1)。那么现在考虑 n > 1 n>1 n>1的情况。
n = p 1 x 1 ∗ p 2 x 2 . . . p k x k ( p i 为 互 质 的 质 因 子 ) n=p_1^{x_1}*p_2^{x_2}...p_k^{x_k}(p_i为互质的质因子) n=p1x1p2x2...pkxk(pi)。设 d = p 1 y 1 ∗ p 2 y 2 . . . p k y k d=p_1^{y_1}*p_2^{y_2}...p_k^{y_k} d=p1y1p2y2...pkyk,加入存在 y i ≥ 2 y_i\geq2 yi2,那么 μ ( d ) = 0 \mu(d)=0 μ(d)=0。现在考虑 y i = 0 或 1 y_i=0或1 yi=01的情况。假设 d d d中有 r r r i i i满足 y i = 1 y_i=1 yi=1,那么 μ ( d ) = ( − 1 ) r \mu(d)=(-1)^r μ(d)=(1)r,这样的 d d d C k r C_k^r Ckr个,所以
∑ d ∣ n μ ( d ) = ∑ r = 0 k C k r ∗ ( − 1 ) r = ( 1 − 1 ) k = 0 \sum_{d|n}\mu(d)=\sum_{r=0}^kC_k^r*(-1)^r=(1-1)^k=0 dnμ(d)=r=0kCkr(1)r=(11)k=0(根据二项式展开的公式)。

性质二:莫比乌斯函数是积性函数,即当 a , b a,b a,b互质时,满足 μ ( a ∗ b ) = μ ( a ) ∗ μ ( b ) \mu(a*b)=\mu(a)*\mu(b) μ(ab)=μ(a)μ(b)

性质三:设 f ( n ) f(n) f(n) g ( n ) g(n) g(n)是集合上的两个函数,并满足 f ( n ) = ∑ d ∣ n g ( d ) f(n)=\sum_{d|n}g(d) f(n)=dng(d),则 g ( n ) g(n) g(n)的积性函数的充分必要条件是 f ( i ) f(i) f(i)是积性函数。

变形一
f ( i ) = ∑ d = 1 ⌊ n i ⌋ g ( d ∗ i ) ⇒ g ( i ) = ∑ d = 1 ⌊ n i ⌋ f ( d ∗ i ) ∗ μ ( d ) f(i)=\sum_{d=1}^{\left \lfloor \frac{n}{i}\right \rfloor}g(d*i)\Rightarrow g(i)=\sum_{d=1}^{\left \lfloor \frac{n}{i}\right \rfloor}f(d*i)*\mu(d) f(i)=d=1ing(di)g(i)=d=1inf(di)μ(d)往容斥方面想一想。

变形二
f ( i ) = ∑ i ∣ d , d ≤ n g ( d ) ⇒ g ( i ) = ∑ i ∣ d , d ≤ n f ( d ) ∗ μ ( d i ) f(i)=\sum_{i|d,d\leq n}g(d)\Rightarrow g(i)=\sum_{i|d,d\leq n}f(d)*\mu(\frac{d}{i}) f(i)=id,dng(d)g(i)=id,dnf(d)μ(id)同样往容斥方面想一想。

线筛求 μ \mu μ:根线筛求质数一样先要把质数筛出来。那么每个质数 p p p只会被访问一次,且 μ ( p ) = − 1 \mu(p)=-1 μ(p)=1。考虑非质数的数 x x x,我们只用 x x x的最小质因子来更新它的 μ ( x ) \mu(x) μ(x),假设枚举都数字 i i i和第 j j j个质数,那么当 i   m o d   p r i j = 0 i \bmod pri_j=0 imodprij=0时,由于存在存在两个相同的质因子,那么 μ ( i ∗ p r i j ) = 0 \mu(i*pri_j)=0 μ(iprij)=0,否则 μ ( i ∗ p r i j ) = − μ ( i ) \mu(i*pri_j)=-\mu(i) μ(iprij)=μ(i)。这样就能线性的求出 μ \mu μ了。

###大步小步法(BSGS)
模型:求解 a x ≡ b (   m o d   p ) a^x \equiv b(\bmod p) axb(modp) p ≤ 1 0 9 + 7 p \leq 10^9+7 p109+7
解法:分两种情况讨论, p p p a a a为质数, p p p a a a不互质。
#### p p p a a a互质
考虑欧拉定理,当 x > φ ( p ) x > \varphi(p) x>φ(p)在模 p p p意义下 a x a^x ax就已经循环了,所以 x ≤ φ ( p ) x\leq \varphi(p) xφ(p)
x = A p + B x=A\sqrt{p}+B x=Ap +B,则原式变为
a A p + B ≡ b (   m o d   p ) a A p ≡ b ∗ ( a B ) − 1 (   m o d   p ) a^{A\sqrt{p}+B}\equiv b(\bmod p) \\ a^{A\sqrt{p}}\equiv b*(a^B)^{-1}(\bmod p) aAp +Bb(modp)aAp b(aB)1(modp)
那么可以预处理右边的 n \sqrt{n} n 种取值用 h a s h hash hash存起来,然后直接枚举 A A A B B B的最小值。
复杂度 O ( φ ( p ) ) O(\sqrt{\varphi(p)}) O(φ(p) )
*当然设的时候可以令 x = A p − B x=A\sqrt{p}-B x=Ap B,那么就不用求逆元了。
#### p p p a a a不互质
考虑怎么把问题转化成第一种情况。
d = g c d ( a , p ) d=gcd(a,p) d=gcd(a,p),那么原式变为
a d a x − 1 ≡ b d ( m o d p d ) a x − 1 ≡ b a ( m o d p d ) \frac{a}{d}a^{x-1} \equiv \frac{b}{d}(mod \frac{p}{d}) \\ a^{x-1} \equiv \frac{b}{a}(mod \frac{p}{d}) daax1db(moddp)ax1ab(moddp)
当然,当 d ∤ b d \nmid b db时无解。
但是 a a a在模 p d \frac{p}{d} dp意义下可能还是没有逆元,那么我们可以重复上面的步骤直到 a a a与模数互质,由于 d ≥ 2 d\geq 2 d2所以这个步骤最多执行 l o g log log次。然后就转化成第一种情况了。
##数学定理

你可能感兴趣的:(算法-数论)