基础数论笔记
笔者年尚十四,水平极为有限,该笔记主要基于《具体数学》,并对一些部分做出了一些不那么使人费解的解释,望你们指出错误,感激涕零。数据结构
最大公约数与最小公倍数
-
\(\gcd(n,m)=\max\{~k~|~~k~|~n~,~k~|~m\}\)函数
-
\(\text{lcm}(n,m)=\min\{~k~|~~k>0~,n~|~k~,~m~|~k\}\)优化
-
\(\gcd(0,n)=n\),\(\gcd(m,n)=\gcd(n~mod~m,m)~~m>0\)ui
-
\(k|m~,~k|n \Leftrightarrow k|\gcd(n,m)\)es5
\[充分性:\because k|m~且~k|n~\therefore k|mm'+nn'\because~mm'+nn'=gcd(n,m)~\therefore k|gcd(n,m). \\ 必要性:\because~k|gcd(n,m)~\therefore k~至少整除~n,m~分别一个因子\therefore k|n,k|m. \]
-
\(\gcd(n,m) \times \text{lcm}(n,m)=n \times m\)spa
\[\because \gcd(n,m)=\prod_{p} p^{\min (n_p,m_p)}~,~\text{lcm}(n,m)=\prod_{p} p^{\max (n_p,m_p)} \\ \therefore \gcd(n,m) \times \text{lcm}(n,m)=\prod_{p} p^{\min (n_p,m_p)} \times \prod_{p} p^{\max (n_p,m_p)}=\prod_{p} p^{n_p+m_p} \]
-
\(\gcd(n,m)=\gcd(kn,km)~,\text{lcm}(n,m)=\text{lcm}(kn,km)~~k>0\)数学
\[\gcd(km,kn)=\prod_{p}p^{\min(n_p+k_p,m_p+k_p)}=\prod_{p} p^{k\min (n_p,m_p)}=k~\gcd(n,m) \\ 同理~\text{lcm}(km,kn)=k~\text{lcm}(n,m)~ \]
-
\(\gcd(a_1,a_2,···a_n)=gcd(a1,gcd(a_2,···a_n))\)class
\[即证实~\gcd~的结合律\\ \\下证\gcd(a,\gcd(b,c))=\gcd(\gcd(a,b),c)\\ \because \gcd(a,b)=\prod_{p} p^{\min (a_p,b_p)},\gcd(b,c)=\prod_{p} p^{\min (b_p,c_p)}\\ \therefore \gcd(a,\gcd(b,c))=\prod_{p} p^{\min (a_p,\min(b_p,c_p))}\\ \gcd(\gcd(a,b),c)=\prod_{p} p^{\min (\min(a_p,b_p),c_p)}\\ \because \min~函数具备结合律\\ \therefore \prod_{p} p^{\min (a_p,\min(b_p,c_p))}=\prod_{p} p^{\min (\min(a_p,b_p),c_p)}=\prod_{p} p^{\min (a_p,b_p,c_p)}\\ \therefore \gcd(a,\gcd(b,c))=\gcd(\gcd(a,b),c),\gcd~函数具备结合律 \]
-
区间\(~\gcd~\)的\(~O(n^2)~\)预处理与\(~O(1)~\)查询,所白了就是一种高效解决给定序列的区间\(~a~\)的区间\(~\gcd~\)的方法。基础
固然有一种显然的\(~O(n~log~n)~\)查询方法,由上文证实的结合律求解便可,设\(~i\in [l,r]~\),\(~a_{i_p}~\)为\(~b_i~\)(由于下标实在太多了)gc
答案为:
\[\prod_{p} p^{\min(b_{l},b_{l+1},···b_{r})} \]
能够对其进行优化,不妨先思考这样一个问题,就是把原来的区间查询变为删掉一个位置为\(~k\)的数,而后求剩余数的\(~\gcd~\),这个问题看起来很简答,只须要求一下前缀\(~\gcd~\),\(~p_i~\)表示到\(~1-i~\)的前缀\(~\gcd~\),后缀\(~\gcd~\),\(~q_i~\)表示到\(~i-n~\)的后缀\(~gcd~\),而后答案为\(~\gcd(p_{i-1},q_{i+1})~\),证实很简单,就是删掉全部\(~a_i~\)的素指数,在合回去照样取\(~\min~\),那么类推区间\(~\gcd~\),至关因而在前面删掉了\(~l-1~\),后面删掉了\(~n-r~\)个,能够递推,\(ans_{i,j}~\)表示区间\(~[i,j]~\)的\(~\gcd\),那么\(~ans_{i,j}=\gcd(ans_{i,i},ans_{i+1,j})\);答案为\(ans_{l,r}\)。(区间\(~\gcd~\)不靠数据结构貌似不能更快了,可是那个删一个的预处理方法仍是很优秀的)
素数
-
算数基本定理:仅有一种方式将 \(n\) 按照素数非减的次序写成素数的乘积
说人话大概是这样:
\[显然的表示是 n=\prod^m_{k=1}p_k~~p_1\leq···\leq p_m \\ 我的喜欢像这样表示~n=\prod_{p}p^{n_p}~~任意~n_p\geq0 \]
第二种表示中的 \(n_p\) 是一个数系,表示 \(n\) 的素因子 \(p\) 的指数,由于有大量的 \(n_p\) 为 \(0\) ,因此第二中表示其实是一个有限的乘积
-
\(k=mn \Leftrightarrow k_p=m_p+n_p\) (初中知识)
-
\(m|n \Leftrightarrow 任意~m_p\leq n_p\)
-
\(\gcd(n,m)=\prod_{p} p^{\min (n_p,m_p)}~,~\text{lcm}(n,m)=\prod_{p} p^{\max (n_p,m_p)}\)
-
存在比任意给定素数集合更多的素数 ——欧几里得
\[设一个数~x=2\times3\times5\times···\times p_k+1 \\ 那么因为~p_1···p_k~都能整除~x-1~,因此~p_1···p_k~都不能整除~x~ \\ 因此在~x~的素因子中必然均为异于~p_1···p_k~的素数,甚至~x~就是一个素数 \]
同余
能够差很少默认为整数取余
- \(a \equiv b~且~d \equiv c \Rightarrow a\pm b \equiv c\pm d\mod m\)
- \(a\equiv b~且~c\equiv d\Rightarrow ac\equiv bd \mod m\)
- \(ad\equiv bd~且~\gcd(d,m)=1\Leftrightarrow a\equiv b \mod m\)
\[必要性显然;\\ 充分性:存在~d',m'~时~dd'+mm'=\gcd(d,m)=1~,若~ad\equiv bd~,则~add'\equiv bdd'\mod m~,因此~a\equiv b~. \]
- \(ad\equiv bd \mod m\Leftrightarrow a\equiv b \mod m/\gcd(d,m)\)
\[必要性显然;\\ 充分性:\because dd'+mm'=\gcd(m,d) \\\therefore a\times \gcd(d,m)\equiv b\times \gcd(d,m) \mod m \therefore a\equiv b \mod m/\gcd(d,m). \]
- \(a\equiv b \mod km\Rightarrow a\equiv b \mod m\)
- \(a\equiv b \mod m~且~a\equiv b \mod n\Leftrightarrow a\equiv b \mod \text{lcm}(m,n)\)
- \(a\equiv b \mod m\Leftrightarrow a\equiv b \mod p^{m_p}\)
费马小定理
- \(p~为素数,\gcd(a,b)=1,a^{p-1}\equiv 1 \mod p\)
\[构造一个~p~的彻底剩余系~P~,其中任意两数关于~p~不一样余,P=\{1,2,···p-1\} \\ \because \gcd(a,b)=1~~ \therefore \{a,2a,···,(p-1)a\}~也是~p~的彻底剩余系. \\ \therefore \prod^{p-1}_{i=1}i\equiv\prod^{p-1}_{i=1}i\times a \mod p \\提出所有的~a~,设~\prod^{p-1}_{i=1}i~为~x~,那么~x\times a^{p-1}\equiv x \mod p~ \\\because \gcd(x,p)=1~\therefore a^{p-1}\equiv 1 \mod p \]
\[\mathbb{To~Be~Continued} \]