数论

整理下学过的数论知识

逆元

满足\(a\times x\equiv 1\pmod p\) 则x为a在模p意义下的逆元 也就是\(a^{-1}\)

线性求逆元:

\(p = k\times i + r\)

\(k\times i+r\equiv 0\pmod p\)

两边同乘\(i^{-1}\times r^{-1}\)

则有\(k\times r^{-1} + i^{-1} \equiv 0\)

移项 得\(i^{-1} \equiv -k\times r^{-1}\)

所以\(i^{-1} \equiv -\frac{p}{i} \times (p\% i)^{-1}\)




费马小定理求逆元

\(a^{p-1} \equiv 1 \pmod p\)

前提:a与p互质 且 p为素数

所以要求a的逆元用快速幂去求\(a^{p-1}\) 就可以了

证明:

引理1: 若\(a*b \equiv a*c \pmod p\)\((a,p) = 1\) 则有\(b \equiv c \pmod p\)

证明:

\(a*b \equiv a*c \pmod p\)

\(a*b - a * c \equiv 0 \pmod p\)

\(a*(b-c) \equiv 0 \pmod p\)

因为\((a,p) = 1\)

所以\(b-c \equiv 0 \pmod p\)

\(b \equiv c \pmod p\)


引理2: 若mod为大于1的整数,\((m,b) = 1\) ,a[1],a[2]...,a[m]为模m的一个完全剩余系 则有\(b*a[1],b*a[2],b*a[3]...b*a[m]\) 也为模m的一个完全剩余系

证明:

反证,假设有\(b*a[1]\equiv b*a[2] \pmod p\),则有引理1知\(a[1] \equiv a[2]\) ,与定义冲突,故假设不成立



由以上两引理:
构造p的完全剩余系 \(1,2,3...,p-1\)

因为\((a,p)=1\)

所以\(a,2a,3a,4a...,(p-1)*a\) 也是p的完全剩余系

由完全剩余系性质:

\(1*2*3...*(p-1) \equiv a * 2a * 3a... *(p-1)a\)

\((p-1)! \equiv a^{p-1}*(p-1)! \pmod p\)

又因为p为素数

所以\((p-1)!\)可以直接消掉

\(a^{p-1} \equiv 1 \pmod p\)





欧拉函数通项公式

首先证明若\(n = p^k\)\(\varphi(n) = p^k-p^{k-1}, p\in prime\)

显然有除了\(p^i\),其它项都与\(p^k\)互质

所以原式成立

对于任一整数,求\(\varphi(n) = n * \prod(1-\frac{1}{p})\)

首先一定可以把n分解为\(n = \prod p_i^{k_i}\)

假定A,B是与m,n,mn互质的数集, 那么A*B 与 C满足一一对应的关系 (中国剩余定理

那么显然有\(\varphi(n) = \prod p^k - p^{k-1}\)

把所有\(p^k\)提出 得到

\(\varphi(n) = n \prod (1 - \frac{1}{p})\)

gcd

关于辗转相除正确性证明

也就是证明\((a,b) = (b,a\% b)\)

\((a,b) = d,a = b*k+r\)

\((b,b* k+r) = d\)

则有\(d|a,d|{a*k+r}\)

\(d|r\)

\(r=a \% b\)

所以\((r,b) = d\) 原式得证




exgcd

求解\(ax+by = gcd(a,b)\)

则相当于求解\(bx+a\% b *y = gcd(b,a\%b)\)

对于这个式子显然可以一直递归 递归到\(b=0\)的时候有\(x=1,y=0\)

那么考虑如何回代,即由当前层求出上一层的\(x,y\)

\(ax+by = gcd(a,b) = gcd(b,a\%b) = bx' + a\%b * y'\)

那么有\(ax+by = bx'+a\%b * y'\)

\(bx' + a\%b * y' = bx' + (a-\frac{a}{b}*b )* y'\)

\(ax + by = ay' + b(x'-\frac{a}{b} * y)\)

\(x = y' , y = (x'-\frac{a}{b}* y)\)

然后一直回代就可以求解了




CRT

求解方程组

\(x \equiv a_1 \pmod {m_1}\)

\(x \equiv a_2 \pmod {m_2}\)

\(x \equiv a_3 \pmod {m_3}\)

\(x \equiv a_4 \pmod {m_4}\)

...

\(x \equiv a_i \pmod {m_i}\)

满足\(m_i\)\(m_j\) 互质(\(i!=j\))

首先把所有\(m\)乘起来为Mod

然后依次去跑每一个方程

求解方程\(\frac{Mod}{m_i}*x \equiv a_i \pmod {m_i}\) 并将此时的\(\frac{Mod}{m_i}*x\) 作为该方程的解

考虑这个方程的解具有什么性质

因为\(Mod\) 是所有模数乘起来得到的 所以当前解一定模其它任一膜数都为0

此时它满足要求的原方程的解的性质

有一个很显然的公式是\(a + b \equiv c \pmod P\)

如果\(a\% P = 0\)

那么有\(b \%P = c\)

所以把所有方程的解加在一起正好满足所有方程

令最后的答案\(\%\)\(Mod\) 得到最小解





EXCRT

posted @ 2021-01-08 16:07  HISKrrr  阅读(133)  评论(0编辑  收藏  举报