数学学习笔记5

底和顶

\(x\in \R\) ,有:

\(\lfloor x\rfloor = 小于等于 x 的最大整数\)

\(\lceil x\rceil = 大于等于 x 的最大整数\)

\(\{x\}\) 表示 \(x\) 的分数部分,$x=\lfloor x\rfloor+{x} $。

整值函数的图像

img

整值函数的基本性质

不妨设 \((x\in \R,n\in \Z)\),有:

  • $\lfloor x\rfloor \le x,x\le \lceil x\rceil $

定义…

  • \(\lfloor x\rfloor =x \Leftrightarrow x\in \Z \Leftrightarrow \lceil x\rceil =x\)

  • \(\lceil x\rceil -1=\lfloor x\rfloor (x\notin \Z)\)

  • $\lfloor -x\rfloor =-\lceil x\rceil ,\lceil -x\rceil =-\lfloor x\rfloor $

底和顶可以相互转换。

  • \(\lfloor x\rfloor =n\Leftrightarrow n\le x<n+1\)
  • \(\lfloor x\rfloor =n\Leftrightarrow x-1< n\le x\)
  • \(\lceil x\rceil =n\Leftrightarrow n-1< x\le n\)
  • \(\lceil x\rceil =n\Leftrightarrow x\le n<x+1\)

可以将底和顶去掉或加上。

  • \(\lfloor x+n\rfloor =\lfloor x\rfloor +n\)

我们可以将一个数移出或进入底和顶。

  • \(x<n\Leftrightarrow \lfloor x\rfloor <n\)
  • $n<x\Leftrightarrow n<\lceil x\rceil $
  • \(x\le n \Leftrightarrow \lceil x\rceil \le n\)
  • $n\le x \Leftrightarrow n\le \lfloor x\rfloor $

任意关于实数与整数的不等式都可以转化成带有底和顶的不等式。同理,我们可以将底或顶和整数的不等式去掉。

$\lfloor x+y\rfloor =\lfloor x\rfloor +\lfloor y\rfloor +\lfloor {x}+{y}\rfloor $

其中 \(0\le \lfloor \{x\}+\{y\}\rfloor< 2\)

对于数 \(2^m\le n<2^{m+1}\) ,在二进制下 \(n\)\(m+1\) 位。\(m\le lg(n)< m+1\Leftrightarrow \lfloor lg(n) \rfloor =m\) ,有 \(\lfloor lg(n) \rfloor +1\) 位。通过另外一种推导可得 \(\lceil lg(n+1) \rceil\) ,这样对于 \(n=0\) 也成立。

  • \(\lceil \lfloor x\rfloor \rceil =\lfloor x\rfloor\)

一类函数与整值函数

\(f(x)\) 为在一个实数区间的连续单增函数,且有

\[f(x)\in \Z \Rightarrow x\in \Z \]

那么有结论:$\lfloor f(\lfloor x\rfloor )\rfloor=\lfloor f(x) \rfloor $。对顶也同样成立。

一个重要特例:若 \(m\in \Z, n\in \N^+\) ,则

\[\lfloor \frac{x+m}{n} \rfloor=\lfloor \frac{\lfloor x \rfloor +m}{n} \rfloor \]

如果我们令 \(m=0,n=10\) ,那么有 \(\lfloor \lfloor\lfloor x/10 \rfloor/10\rfloor/10\rfloor=\lfloor x/1000 \rfloor\) ,这意味着我们逐步抛弃各位数组得到的千位等于直接除以 1000 的商。

任意区间内整数个数

\(a,b\in \R\) ,则不同区间内的整数个数为:

  • \([a..b)=\lceil b\rceil - \lceil a\rceil ,a\le b\)
  • \((a..b]=\lfloor b\rfloor - \lfloor a\rfloor ,a\le b\)
  • \([a..b]=\lfloor b\rfloor-\lceil a\rceil+1,a\le b\)
  • \((a..b)=\lceil b\rceil -\lfloor a\rfloor -1 ,a< b\)

底和顶的和式

见书

一个实数 \(a\) 的谱是整数组成的一个无限多重集合:

\[Spec(a)=\{\lfloor a\rfloor,\lfloor 2a\rfloor,\lfloor 3a\rfloor,...\} \]

没有两个谱是相等的,不妨设 \(a<b\) ,只需证明存在一个 \(m\) 使得 \(\lfloor ma \rfloor >\lfloor mb\rfloor , \lfloor ma \rfloor -\lfloor mb\rfloor\ge 1,m(a-b)\ge 1\) 即可,一定存在。

性质:$Spec(\sqrt2 ) , Spec(2+\sqrt 2 ) $ 是对 \(\N^+\) 的一个 划分

证明:只需证对于任意 \(n\) ,有两个件集合 \(\le n\) 的个数和等于 \(n\) 即可。

整齐恒等式:\(\frac{1}{\sqrt 2}+\frac{1}{2+\sqrt 2}=1\)

底和顶的递归式

约瑟夫问题,由于求解一般的递归式是困难的,我们考虑用另一种性质去描述它:

我们每次隔两个人处死一个人,并且每次都要重新标号。求出最后被处死人的新标号。类似于一个队列。

这样的形式说明我们的标号总是连续的,即我们每次将标号+=2 就可以得到将指针移动两格,这样每次处死的编号为 \(3k\) ,下两个数 \(3k+1,3k+2\) 被重新标号为 \(n+2k+1,n+2k+2\)

我们知道:最后幸存的标号一定为 \(3n\) ,不过这不是我们想要的结果,我们希望还原出它之前的下标。

如果 \(N\le n\) 那么 \(N\) 是初始编号,反之,\(N\) 一定存在一个之前编号,考虑求出这个编号。

\(N=3n\),杀死第 \(k\) 个人的标号为 \(3k\) ,后两个人的标号 \(3k+1\gets n+2k+1,3k+2\gets n+2k+2\) ,设 \(N=n+2k+w,w\in [1,2]\),那么 \(N\) 之前的编号 \(3k+w=k+N-n\) ,而 $k=\lfloor \frac{N-n-1}{2}\rfloor $,于是我们可以递归迭代求解。

如果我们令 \(D=3n+1-N\) 来替换 \(N\) 的话,相当于改变编号顺序,则有:

$3n+1-D'=2n+1-D+\lfloor \frac{2n-D'}{2}\rfloor =3n+1-(\lceil \frac{3D}{2}\rceil ) $

\(D'=\lceil \frac{3D}{2}\rceil\),最后 \(J_3(n)=3n+1-D\)

进一步地,我们可以将这个式子推广到 \(J_q\) ,易验证 \(J_2(n)=2(2^m+l)+1-2^{m+1}=2l+1\) ,这十分成功。

**mod:二元运算 **

定义及性质

\(n,m\in \N^+\)\(n\)\(m\) 的商为 $\lfloor \frac{n}{m}\rfloor $ ,我们记余数为 \(n\bmod m\),有基本公式:

\[n=m\lfloor \frac{n}{m}\rfloor +n\bmod m \]

事实上,我们可以将 \(mod\) 推广到负整数甚至是任意实数。

\[x\bmod y=x-y\lfloor \frac{x}{y}\rfloor \]

其中 \(y\) 称为 模(modulus)

几何意义:当 \(x,y\in \R^+\) ,可以想象一个周长为 \(y\) 的圆,圆上的点被赋予了 \([0,y)\) 中的实数。如果我们从 0 出发,绕着圆行走 \(x\) 的距离,我们最后就停在 \(x\bmod y\),且行走时遇到 \(0\) 的次数为 $\lfloor \frac{x}{y}\rfloor $

\(x,y\) 有负数时,我们需要仔细:

\[5\bmod 3= 2 \\ 5\bmod -3 =-1 \\ -5\bmod 3=1 \\ -5\bmod -3 =-2 \]

注意到 \(x\bmod y\) 的值都介于 \(0\)\(y\) 之间。

\[0\le x\bmod y < y,y>0\\ 0\ge x\bmod y>y,y<0 \]

特殊地,我们规定:

\[x\bmod 0=x \]

这样可以使 \(x\bmod y\)\(x\) 始终相差一个 \(x\) 的倍数。

我们用底函数定义了 \(\bmod\) ,考虑再用顶函数定义一个像为:

\[x ~\text{mumble}~y=y\lceil \frac{x}{y}\rceil -x,y\not=0 \]

几何意义:类似,考虑圆的结构,就相当于走了 \(x\) 的距离后,要回到起点 \(0\) 还需要走的距离。

\(\bmod\) 的性质:

  • \(c(x\bmod y)=cx\bmod cy\)
  • \((x+y)\bmod m=(x\bmod m+y\bmod m)\bmod m\)
  • \((xy)\bmod m=(x\bmod m\times y\bmod m)\bmod m\)

应用

给定 \(N\) 个物品和 \(M\) 个组,物品之间本质相同,要求把每个物品分配到某一个组里,使得组内的物品个数递减排序,且任意两个相邻的组时间的物品个数相差不超过 \(1\) ,求每组该分配多少个物品。

一个显然的思路:我们可以将物品一个一个地分配,每次找一个个数最少的组插入,归纳知这是正确的。

通过观察发现,将问题看成一个矩阵,则长的列有 $\lceil \frac{n}{m}\rceil $ 个物品,短的列有 \(\lfloor \frac{n}{m}\rfloor\) 个物品,共有 \(n\bmod m\) 个长列,\(n~\text{mumble}~m\) 个短列。这是一个可行解。

另一种思路是,我们知道第一组该放 $\lceil \frac{n}{m} \rceil $ 个物品,我们令 \(n'=n-\lceil \frac{n}{m} \rceil,m'=m-1\) ,递归地去放这写物品,所得到的答案是相同的,尽管我们的除数一直在发生变化。

为什么呢?我们设 \(n=qm+r,q=\lfloor \frac{n}{m}\rfloor ,r=n\bmod m\) ,当 \(r=0\) 时,\(n=qm\) ,下一次 \(n'=qm',n'=n-q,m'=m-1\),显然成立;当 \(r\not= 0\) 时,\(n'=qm'+r-1,n'=n-q-1,m'=m-1\) ,由于 \(q\) 是不变的,于是得出前 \(r\) 组的物品个数为 \(q+1\) ,接下来的 \(m-r\) 组的物品个数为 \(q\)

对于第 \(k\) 组,它的物品个数为 $\lfloor \frac{n-k+1}{m}\rfloor $ ,因为对于 \(k\le r\) 的个数为 \(q+1\)\(r<k\le m\) 的个数为 \(q\)

这样一来,我们可以写出一个恒等式,他表示将 \(n\) 分成 \(m\) 按照非增次序排列尽可能相等的部分的划分:

\[n=\lceil \frac{n}{m}\rceil +\lceil \frac{n-1}{m}\rceil +...+\lceil \frac{n-m+1}{m}\rceil\\ n=\lfloor \frac{n}{m}\rfloor +\lfloor \frac{n+1}{m}\rfloor +...+\lfloor \frac{n+m-1}{m}\rfloor \\n\in \Z,m\in N^+ \]

\(m=2\) 时有 $n=\lceil \frac{n}{2} \rceil +\lfloor \frac{n}{2}\rfloor $

如果用 $\lfloor mx\rfloor $ 替换 \(n\) ,并利用整值函数的性质去掉内部的底可得:

\[\lfloor mx\rfloor=\lfloor x\rfloor +\lfloor x+\frac{1}{m}\rfloor +...+\lfloor x+\frac{m-1}{m}\rfloor,x\in \R\\ \lfloor x\rfloor =\lfloor \frac{x}{m}\rfloor +\lfloor \frac{x+1}{m}\rfloor +...+\lfloor \frac{x+m-1}{m}\rfloor \]

底和顶的和式

机械的方法:引入一个新的变量来规避底和顶。

$\sum_{0\le k<n} \lfloor \sqrt k\rfloor $

更多的技巧见:click

一个显然的思路是按照 $\lfloor \sqrt k\rfloor $ 分组,并统计个数,这样能得到正确答案(与整除分块类似),不过我们更偏向于机械的去做。

令 $a=\lfloor \sqrt n\rfloor $

\[\sum_{0\le k<a^2} \lfloor \sqrt k\rfloor \\ =\sum_{k,m\ge 0}m[m^2\le k<(m+1)^2][0\le k<a^2]\\= \sum_{k,m\ge 0}m[m^2\le k<(m+1)^2][m<a]\\= \sum_{0\le m<a}m(2m+1)\\= \frac{a(a-1)(2a-1)}{3}+\frac{a(a-1)}{2}\\= \frac{a(4a+1)(a-1)}{6}\\ \sum_{a^2\le k<n}\lfloor \sqrt k\rfloor \\= (n-a^2)a\\ 封闭形式=全都加起来 \]

\(\sum_{1\le n\le 1000}[^3\sqrt n\mid n]\)

\[\sum_{1\le n\le 1000}[^3\sqrt n\mid n]\\= \sum_{n,m,k}[m^3\le n<(m+1)^3][n=mk] [1\le n\le 1000]\\= 1+\sum_{n,m,k}[m^3\le n<(m+1)^3][n=mk][1\le m<10]\\= 1+\sum_{m,k}[m^3\le mk<(m+1)^3][1\le m<10]\\= 1+\sum_{1\le m<10} [m^2..\frac{(m+1)^3}{m})\\= 1+\sum_{1\le m<10} \lceil \frac{(m+1)^3}{m}\rceil -m^2\\= 1+\sum_{1\le m<10} (3m+4) \]

\(\sum_{0\le k<n} \frac{nk+x}{m},n\in \Z,m\in N^+\)

\[$\sum_{0\le k<n} \lfloor \frac{kn+x}{m}\rfloor \\ 因为 (kn-kn\bmod m)\mid m\\= \frac{kn-kn\bmod m}{m}+\lfloor \frac{kn\bmod m+x}{m}\rfloor\\= \lfloor \frac{kn\bmod m+x}{m}\rfloor+\frac{kn}{m}-\frac{kn\bmod m}{m} \]

注意到这个式子有三项,于是我们可以对这三项分别计算,待定系数法推测最后的形式是 \(a\lfloor \frac{x}{a}\rfloor +bn+c\)

先考虑一个问题:考虑 \(0\bmod m,n\bmod m,2n\bmod m,...,(m-1)n\bmod m\) 的数列,几何意义是一个周长为 \(m\) 的时钟,每次偏移相同的弧度 \(n\) 。易证数列的值为 \(0,d,2d,...,m-d\) ,每个数共出现 \(d\)\((其中 d=\gcd(m,n))\)

于是

\[1:d(\lfloor \frac{0+x}{m}\rfloor +\lfloor \frac{d+x}{m}\rfloor +...+\lfloor \frac{m-d+x}{m}\rfloor)=d\lfloor \frac{x}{d}\rfloor\\ 2:\frac{n(m-1)}{2}\\ 3:略 \]

注意封闭形式中 \(m,n\) 是对称的,于是这个和式具有 \(n,m\) 的互反性。

Number Theory

整除

如果 $m>0 $ ,且 \(\frac{n}{m}\) 的值是一个整数,那么 \(m\mid n\)

\[m\mid n\Leftrightarrow m>0且存在某个整数 k,使得 n=mk \]

注意整除和倍数不完全相同。

\[\gcd(m,n)=\max(k)(k\mid n \and k\mid m)\\ lcm(m,n)=\min(k)(k>0\and n\mid k\and m\mid k) (n,m>0) \]

欧几里得算法:

\[\gcd(0,n)=n,gcd(n,m)=gcd(m,n\bmod m) ,0\le m<n \]

\[mm'+nn'=\gcd(m,n) \]

  • \(k\mid m,k\mid n\Leftrightarrow k\mid \gcd(m,n)\)

如果条件成立的话,那么 \(k\mid mm'+nn'=\gcd(n,m)\)

  • 因子求和:\(\sum_{m\mid n} a_m=\sum_{m\mid n} a_{n/m},n\in N^+\)
  • 二重因子求和:\(\sum_{m\mid n}\sum_{k\mid m}a_{k,m}=\sum_{k\mid n}\sum_{l\mid (n/k)}a_{k,kl}\)

素数

如果一个正整数 \(p\) 恰好有两个因子 \(1,p\) ,那么这个数称为素数,每个大于 \(1\) 的数要不是素数要不是合数。

算术基本定理:\(n=p_1...p_m=\Pi_{k=1}^mp_k,p_1\le ...\le p_m\)

  • 证明:归纳法,若 \(n=p_1...p_m=q_1...q_k\) ,若 \(p_1=q_1\) 归纳成立,否则不妨设 \(p_1<q_1\) ,因为 \(ap_1+bq_1=1\) ,所以 \(ap_1q_2..q_k+bq_1..q_k=q_2..q_k\) ,此时 \(p_1\mid 左边,但 \nmid 右边\) ,与假设矛盾,命题得证。

我们将 \(<n_2,n_3,n_5,...>\) 看成 \(n\in N^+\) 的数系,有如下性质:

  • \(k=mn\Leftrightarrow k_p=m_p+n_p,\forall p\)
  • \(m\mid n \Leftrightarrow m_p\le n_p,\forall p\)
  • \(k=\gcd(n,m)\Leftrightarrow k_p=\min(m_p,n_p),\forall p\)
  • \(k=lcm(n,m)\Leftrightarrow k_p=\max(m_p,n_p),\forall p\)

如果 \(p\mid mn\) ,那么根据唯一分解定理,\(p\mid m或 p\mid n\) ,因为素数是不可分裂的,它必定整除其中一者。

素数的个数

有无穷多个素数

  • 证明:反正法,假如已知有限个素数为 \(2,3,5..,p_k\) ,考虑数 \(n=2\times 3\times 5\times ...\times p_k+1\),显然 \(\forall k,p_k\nmid n\) ,所以必定有一个 $P\mid n $ 或 \(n\) 本身是一个素数,与假设矛盾。

欧几里得数 \(e_n=e_1e_2...e_{n-1}+1,n\ge 1\)

虽然 \(e_n\) 不一定是素数,不过对于任意 \(m<n,\gcd(e_m,e_n)=1\) ,即 \(e\) 两两互素。

  • 证明:因为 \(\gcd(e_m,e_n)=\gcd(e_n\bmod e_m,e_m)=\gcd(1,e_m)=1\)

如果我们假设 \(q_i\)\(e_i\) 的最小质因数,那么 \(q_1,q_2,..,\) 互不相同,于是我们得到了一个无穷多个素数的序列。

梅森数: \(2^p-1\) ,如果 \(p\) 是合数的话,那么 \(2^n-1\) 一定不可能素数(平方差公式展开可证)。

记不超过 \(n\) 的素数个数为 \(\pi(n)\),则 \(\pi(n)\sim \frac{n}{ln(n)}\)。对于一个随机的整数 \(n\) ,它是素数的概率为 \(\frac{1}{ln(n)}\)

孪生素数: \(p,p+2\)

阶乘

\[n!=1*2*3*...*n=\Pi_{k=1}^nk,n\in N \]

组合意义是 \(n\) 个小球的排列数。

如果我们给定 \(p\) ,我们相求 \(n!\) 分解中 \(p\) 的指数,即能整除 \(n\)\(p\) 的最大幂,这该怎么办呢?

不妨先考虑 \(p=2\),我们可以对每个 \(p\) 的幂统计 \(1\sim n\) 中有多少个数能被 \(p\) 整除,总和就是答案!

$h_2(n!)=\sum_{k\ge 1}\lfloor \frac{n}{2^k}\rfloor $ ,可以发现很多项都是 \(0\) ,所以 \(k\in[1,\lfloor lg(n)\rfloor ]\) ,这可以由底的不等式得到。

进一步的,我们可以写出 \(n\) 的二进制 \((101011)_2\) ,发现相当于每次右移并累加答案(根据整值函数的性质)。

最终整理得:\(h_2(n!)=n-popcount(n)\) ,对于任意 \(p\) ,有上界 \(h_p(n!)=\frac{n}{p-1}\)

互素

\(\gcd(m,n)=1\) 时,整数 \(m,n\) 没有公共的素因子,我们就称它是互素的。

  • \(d=\gcd(m,n),\gcd(m/d,n/d)=1\)
  • \(k\gcd(m,n)=\gcd(km,kn)\)
  • \(\gcd(m,n)=1\Leftrightarrow \min(m_p,n_p)=0,\forall p\)
  • \(\gcd(m,n)=1\Leftrightarrow m_pn_p=0,\forall p\)
  • \(\gcd(k,m)=1,\gcd(k,n)=1\Leftrightarrow \gcd(k,mn)=1\)

Stern-Brocot 树

Stern-Brocot 树是一种不重不漏列举有理数(最简分数)的方式,构造如下:

一开始,序列中有两个数 \(\frac{0}{1},\frac{1}{0}\) ,接下来,进行以下操作:在两个相邻分数 \(\frac{m}{n},\frac{m'}{n'}\) 之间插入中位分数 \(\frac{m+m'}{n+n'}\),无限构造下去的序列满足两个性质:

  1. 所得到的分数都是最简分数,即 \(\gcd(m,n)=1\)
  2. 所得到的分数不重不漏,换句话说,任意非负有理数在这个集合中恰出现一次。
  3. 序列单调递增

因为对于 \(\frac{m}{n}<\frac{m'}{n'}\) ,一定有 \(\frac{m}{n}<\frac{m+m'}{n+n'}<\frac{m'}{n'}\) ,作差可得。于是我们得到的分数是不重的。

性质:对于序列中相邻两个分数 \(\frac{m}{n},\frac{m'}{n'}\) ,一定有 \(m'n-mn'=1\) ,归纳法可证。于是根据裴蜀定理易得:\(\gcd(m,n)=\gcd(m',n')=1\)

最后需要证明任意有理数 \(\frac{a}{b}\) 都能被构造出来,类似二分的方法,假设 \(\frac{m}{n} <\frac{a}{b}<\frac{m'}{n'}\) ,一定有 \(an-bm\ge 1,bm'-an'\ge 1\) ,将不等式合并可得 \((m'+n')(an-bm)+(m+n)(bm'-an')\ge m+n+m'+n'\) ,整理可得 \(a+b\ge m+n+m'+n'\) ,右式随着操作次数的增加而增肌,于是至多在 \(a+b\) 步之后被找到。

如果将序列按照二叉搜索树的性质仍到一棵树上,那么有很多性质:一个数是由祖先中最大小于它的数和最小大于它的数(前驱和后继)的中位分数,关于根中心对称的两个点互为倒数。

定义法里级数 \(F_n\) 为所有在 \([0,1]\) 范围内且分母 \(\le n\) 的最简分数集合,\(F_n\) 可以由 \(F_{n-1}\) 不断插入分母为 \(n\) 的数得到。它比 Stern-Borcot树 有着简单但优美的性质:

  1. \(0\le m\le n,(n,m)=1\)

  2. 分母为 \(n\) 的有理数个数为 \(\varphi(n)\)

  3. \(\frac{m}{n},\frac{m'}{n'}\) 是两个相邻的分数,有 \(m'n-mn'=1\)

  4. \(\frac{b}{a},\frac{m}{n}\) ,其中 \(a,b\) 是对应不定方程 \(ma-nb=1\) 的一组解。

    数论

整数的离散型:\(\forall x,y\in \Z,x<y \Leftrightarrow x+1\le y\)

整数运算的封闭性:和差积仍为整数。

对于 \(x\in \Z\) ,若 \(x=2k+1,k\in \Z\) ,则 \(x\) 是奇数,否则是偶数。

奇+-奇=偶,偶+-奇=奇,奇×奇=奇,奇×偶=偶。

连续 \(m\) 个整数的乘积,一定能被 $1\sim m $ 整除(抽屉原理)。

质数: 若一个正整数无法被除了 \(1\) 和自身的任何自然数整除,则称该数为素数,否则称为合数。

质数的分布比较系数,对于一个较大的整数 \(N\) ,不超过 \(N\) 的质数大概有 \(\frac{N}{lnN}\) 个,即每 \(lnN\) 个数才会有一个质数出现。

质因子次数符号: \(n\) 当中质因数 \(p\) 的次数记作 \(v_p(n)\) 。即 \(p^{v_p(n)}\mid n\and p^{v_p(n)+1}\nmid n\)

各位数字之和符号: \(n\)\(p\) 进制下各位数字之和为 \(s_p(n)\)

质数的判定

试除法:若一个正整数 \(n\) 是合数,则存在 \(m|n\) ,使得 \(2\le m\le \sqrt n\)

证明:反证法,假设不成立,一定有 \(m|n,m>\sqrt n\) ,易发现 \(2\le n/m \le \sqrt n\) 。矛盾,假设不成立。

可以依次扫描 \(2\sim \sqrt n\) ,检查每个数能否整除 \(n\) ,如果范围内不存在这样数,则 \(n\) 是质数,反之是合数。

质数的筛选

  • 给定 \(n\) ,求出 \(1\sim n\) 之间的所有质数。

Eratosthenes 筛法

想法:对于整数 \(x\) 的任意倍数 \(2x,3x,...\) 都不是质数。

我们可以从 \(2\) 开始,从小到大枚举每个数 \(x\) ,把它的倍数 \(2x,3x,..,\lfloor \frac{n}{x}\rfloor x\) 标记为合数。当扫描到一个数,若它尚未被标记,则它不能被 \(2\sim x-1\) 整除,说明它是质数。

实际上,\(<x^2\)\(x\) 的倍数在扫描更小的数时就已经被标记过了,因此可以优化,只需将 \(x^2,(x+1)x,..,\lfloor \frac{n}{x}\rfloor x\) 标记为合数即可。

复杂度 \(O(\sum_p\frac{n}{p})=O(n\log\log n)\)

线性筛法

考虑继续优化,让 \(x\) 只被它的最小质因子 \(v(x)\) 标记到,即对于数 \(i\) ,我们标记所有 \(x=v(x)i\) 的数,易发现这样有 \(v(x)\le v(i),v(x)\in P\) ,于是算法流程为:

  1. 从小到大枚举 \(2\sim n\)
  2. 如果 \(v(i)=i\) ,说明 \(i\) 是质数,将它保存下来。
  3. 扫描不大于 \(v(i)\) 的每个质数 \(p\) ,令 \(v[i\times p]=p\) ,也就是在 \(i\) 的基础上累积上一个 \(p\) ,因为 \(p\le v(i)\) ,所以 \(p\) 就是 \(i\times p\) 的最小质因子。

每个合数 \(i\times p\) 只会在枚举 \(i\) 时被它的最小质因子 \(p\) 枚举一次,所以复杂度为 \(O(n)\)

质因数分解

算术基本定理: 对于任何一个大于 \(1\) 的正整数都能唯一分解为有限个质数的乘积,可写作:

\[n=p_1^{c_1}p_2^{c_2}...p_m^{c_m} \]

其中 \(c_i\) 都是正整数,\(p_i\) 都是质数,且满足 \(p_1<p_2<...<p_m\)

试除法

根据唯一分解定理,我们知道对于数 \(n\) 至多有一个质因子 \(>\sqrt n\) ,于是我们枚举 \(d\in [2,\lfloor \sqrt n\rfloor ]\) ,若 \(d\mid n\) ,则从 \(n\) 中除掉所有 \(d\) 的因子,同时累计除去的个数。

易发现 \(d\) 一定是质数,因为合数的因子已经在扫描到之前就全被除掉了。

如果最终 $n'\not=1 $ ,说明 \(n\) 存在一个大于根号的质因子 \(n'\) ,加进去即可。

Acwing196 质数距离

根据刚刚那个性质,对于一个合数 \(i\) 一定存在一个数 $2\le j\le \lfloor \sqrt i\rfloor $ ,使得 \(j\mid i\) ,否则 \(i\) 就是质数。

于是我们可以筛出 \(2\sim \sqrt R\) 的所有质数 \(p\) ,将 \([L,R]\) 中所有 \(p\) 的倍数标记,即标记所有 $ip(\lceil \frac{L}{p}\rceil \le i\le \lfloor \frac{R}{p}\rfloor ) $ 。

最后未被标记的数就是质数,两两比较即可。

注意C++负数下取整会出问题,但有公式:

\[\lceil \frac{L}{p}\rceil =\lfloor \frac{L+p-1}{p}\rfloor \]

于是时间复杂度为 \(O(\sqrt R+(R-L+1)\log\log \sqrt R)\)

Acwing197 阶乘分解

一个暴力的想法是对每个 \(1\le i\le n\) 分解质因数,再把结果合并,复杂度为 $O(n\sqrt n) $。

显然对于 \(1\sim n\) 的质因子一定不会超过 \(n\) ,于是我们可以先筛出 \(1\sim n\) 的所有质数,然后考虑对于每一个 \(p\) 求出对应的 \(v_p(n!)\) 就可以了。

\[v_p(n!)=\sum_{k=1}^{\lfloor \log_p n\rfloor } \lfloor \frac{n}{p^k} \rfloor \]

由于 $1\sim n $ 的质数约为 $O(\frac{n}{\ln n}) $ 个,单个 \(p\)\(v_p(n!)\) 的复杂度为 \(\log_p n\) ,总时间复杂度近似为 \(O(n)\)

约数

在唯一分解定理中,\(n=p_1^{c_1}p_2^{c_2}...p_m^{c_m}\) ,则 \(n\) 的正约数集合可写成:

\[\{p_1^{b_1}p_2^{b_2}...p_m^{b_m}\},0\le b_i\le c_i \]

\(n\) 的正约数个数为 : \((c_1+1)(c_2+1)...(c_m+1)=\prod_{i=1}^m(c_i+1)\)

**\(n\) 的所有正约数的和为: ** \((1+p_1+p_1^2+...+p_1^{c_1})...(1+p_m+p_m^2+...+p_m^{c_m})=\prod_{i=1}^m(\sum_{j=0}^{c_i}(p_i)^j)\)

求 n 的所有正约数集合——试除法

\(d\ge \sqrt n\)\(n\) 的约数,那么 \(n/d\le \sqrt n\) 也是 \(n\) 的约数。换句话说,约数总是成对出现的(除了完全平方数,\(\sqrt n\) 单独出现)。

因此,只需要扫描 \(1\le d\le \sqrt n\) ,尝试 \(d\) 能否整除 \(n\) ,若能整除,则 \(n/d\) 也是 \(n\) 的约数,复杂度为 \(O(\sqrt n )\)

试除法的推论

一个数 \(n\) 的约数个数上界为 \(2\sqrt n\) ,实际上有更精确的上界 \(d(n)(约等于^3\sqrt n)\) ,这往往会成为解决题目的关键。

Acwing198 反素数

引理1:不超过 \(n\) 最大的反质数一定是约数个数最大的数中最小的数。

证明:假设这个数为 \(x\) ,那么对于 \(y>x\) 一定不可能是答案。且 \(1\sim x-1\) 中都有 \(g(y)<g(x)\) ,于是 \(x\) 是答案。

引理2:\(1\sim n\) 中不同的质因子个数不会超过 \(10\) ,且所有质因子的指数总和不会超过 \(30\)

证明:最小的 \(10\) 个质因数的乘积为 \(2*3*5*7*11*13*17*19*23*29>2e9\) 。即使只包含最小的质数 $2 $ ,那么也有 \(2^{31}>2e9\)

引理3:若一个数 \(x\) 是反质数,则它的形式一定为 \(2^{c_1}3^{c_2}5^{c_3}...29^{c_{10}}\) ,并且 \(c_1\le c_2\le ...\le c_{10}\)

考虑调整法,如果不满足 \(c\) 单调不降,那么一定可以将 \(c\) 排序使 \(x\) 更小,且 \(g\) 的值不会受影响。如果质因数不是连续的最小的质数,那么依然可以调整。

于是我们可以大力 DFS ,DP一下情况总数最坏是 \(8e8\) 的,但由于有 \(\le n\) 的限制,所以搜索量实际非常小。

Acwing199 余数之和

首先题目可以转化为 \(nk-\sum_{i=1}^n\lfloor \frac{k}{i}\rfloor i\)

设 $g(x)=\lfloor \frac{k}{\lfloor \frac{k}{x}\rfloor }\rfloor $ ,则 \(g(x)\ge \lfloor \frac{k}{ \frac{k}{x}}\rfloor=x\),所以 $\lfloor \frac{k}{g(x)}\rfloor \le \lfloor \frac{k}{x}\rfloor $。

另外,$\lfloor \frac{k}{g(x)}\rfloor \ge \lfloor \frac{k}{\frac{k}{\frac{k}{x}}}\rfloor =\lfloor \frac{k}{x}\rfloor $ 。 于是有 $\lfloor \frac{k}{g(x)}\rfloor = \lfloor \frac{k}{x}\rfloor $。

进一步可得,\(\forall i\in [x,\lfloor \frac{k}{\lfloor \frac{k}{x}\rfloor }\rfloor ]\)\(\lfloor \frac{k}{i}\rfloor\) 值都相等。

对于 \(\forall i\in [1,k] ,\lfloor \frac{k}{i}\rfloor\) 至多只有 \(2\sqrt k\) 种不同的值。这是因为当 \(i\le \sqrt k\) 时,\(i\) 只有 \(\sqrt k\) 种选择,故 \(\lfloor \frac{k}{i}\rfloor\) 只有 \(\sqrt k\) 种不同的值。而当 \(i>\sqrt k\)\(\lfloor \frac{k}{i}\rfloor <\sqrt k\) ,故 \(\lfloor \frac{k}{i}\rfloor\) 至多也只有 \(\sqrt k\) 种值。

综上所述,对于 \(i=1\sim k\)\(\lfloor \frac{k}{i}\rfloor\) 由不超过 \(2\sqrt k\) 个连续段组成,每一段 \(i\in [x,\lfloor \frac{k}{\lfloor \frac{k}{x}\rfloor }\rfloor ]\)\(\lfloor \frac{k}{i}\rfloor\) 的值都相等于 \(\lfloor \frac{k}{x}\rfloor\) ,于是 \(\lfloor \frac{k}{i}\rfloor i=\lfloor \frac{k}{x}\rfloor i\) ,直接上等差数列求和公式。

其实这就是 整除分块。复杂度 \(O(\sqrt n)\)

整除

定义:如果非零整数 \(a\) 是整数 \(b\) 的因数(约数,\(b/a\) 的余数为 \(0\) ),即 \(b\bmod a=0\) ,则称 \(a\) 整除 \(b\)\(b\)\(a\) 整除,记作 \(a |b\) 。(存在一个整数 \(k\) ,使得 \(b=ak\)

  • \(b|0;\pm 1|a;a|a\)

  • \(b|a,a\not= 0,则 1\le |b| \le |a|\)

  • \(若 b|a \Rightarrow b|ka(k\not= 0,k\in \Z)\)

  • \(若b|a,则bc|ac\)

  • \(若 b|a,b|c,则 b|(a\pm c)\)

  • \(若b|a,b|(a\pm c) ,则 b|c\)

  • \(若b|a,b|c,则 b|(ma+nc)\)

  • \(若 b|a,则 b^m|a^m\)

  • \(a|b,b|c\Rightarrow a|c\)

  • \(b|a,c|a,(b,c)=1\Rightarrow bc|a\)

  • \(b|ac,(b,a)=1\Rightarrow b|c\)

Th: 平方数的正因数个数是奇数个。

除法的性质:

定义: 对于任意 $a,b\in \Z,(a\not= 0) $,存在唯一整数对 \((q,r)\) ,使得 \(b=qa+r(0\le r< |a|)\) 。读作 \(b\)\(a\)\(a\)\(r\)

能同时整除两个数\(n\)\(m\)的数称为\(n\)\(m\)的公因子,所有公因子中最大的那个称为最大公因数,记作\(\gcd(n,m),(n,m)\).而最小的能同时被\(n\)\(m\)整除的非零数被称为他们的最小公倍数,记作\(lcm(n,m),[n,m]\).不难发现\(lcm(n,m)\gcd(n,m)=nm\)

\((n,0)=(n,n)=n\)

对于整数 \(a,b\) ,若 \((a,b)=1\) ,我们称 \(a,b\) 互素或互质

基本性质:

  • \(若a|b,a|c,则a|(b,c)\)
  • \(若 m>0,则 m(a,b)=(ma,mb)\)
  • \(若 (a,b)=d,则 (\frac{a}{d},\frac{b}{d})=1\)
  • \(若(a,m)=1,(b,m)=1 ,则 (ab,m)=1。(a⊥ m,b ⊥ m\Leftrightarrow ab ⊥ m)\)
  • \(若(a,b)=1\Rightarrow (a^n,b)=1,(a^n,b^m)=1\)
  • \(若 a|m,b|m,则 [a,b]|m\)
  • \((a,b)\times [a,b]=|ab|\)
  • \(b_1,b_2,...,b_n 两两互素,b_i|a(1\le i\le n) ,则\Pi_{i=1}^nb_i|a\)

辗转相除法

\(\forall n,m\in \N,\gcd(n,m)=\gcd(m,n\bmod m)\)

  • 证明:当 \(n<m\) 时显然成立。当 \(n\ge m\) 时,设 \(d=(n,m),r=n\bmod m\) , 有 \(n=qm+r\) ,又因为 \(d|n,d|qm\) ,所以 \(d|r\)

于是可以将 \((n,m)\) 转化成求 \((m,n\bmod m)\) ,因为 \(n \bmod m< m\) ,最终递归到 \((d,0)\) 时,\(d\) 就是 \((n,m)\)

裴蜀定理: \(a,b\in \Z ,若 (a,b)=1,则存在 x,y\in \Z ,使得 ax+by=1,反之也成立\)

  • 先证充分性:反证法,假设设 \(k=(a,b),k\not=1\) ,则 \(a=pk,b=qk\)\(apk+bqk=1,ap+bq=\frac{1}{k}\) ,根据整数的封闭性,可知不存在。

  • 再证必要性:其实扩展欧几里得算法就构造地证明了。

进一步的,\(ax+by=(a,b)\) 存在一组 \((x,y)\) 的解。

同余

定义: 若整数 \(a,b\) 除以正整数 \(m\) 的余数相等,则称 \(a,b\)\(m\) 同余,记为 \(a\equiv b \pmod m\),读作 \(a\) 同余于 \(b\) ,或 \(a,b\)\(m\) 同余。即 \(a\equiv b\pmod m\Leftrightarrow a\bmod m=b\bmod m\)

例如:\(9\equiv -16\pmod 5\) .

  • \(a\equiv b\pmod m\Leftrightarrow m\mid (a-b)\)
    • 必要性:$a\bmod m=b\bmod m,a-\lfloor \frac{a}{m}\rfloor m=b-\lfloor \frac{b}{m}\rfloor m,a-b=m(...) $
    • 充分性:\(a-b=mk,a\bmod m=a-\lfloor \frac{a}{m}\rfloor m=b+km-\lfloor \frac{b+km}{m}\rfloor m=b\bmod m\)
    • 这很有用处,比如 \(8\equiv 23\pmod 5\) ,我们只需要计算 \(5\mid (8-23=-15)\) ,比不需要分别计算余数

同余式与方程很像。同余还是一个等价关系,也就是说,它满足自反律、对称律、传递律。

我们将同余的元素相加或相减,仍保持同余关系:

  • \(a\equiv b\and c\equiv d\Rightarrow a+c\equiv b+d\pmod m\)(可加性)
  • \(a\equiv b\and c\equiv d\Rightarrow a-c\equiv b-d\pmod m\)(可减性)
    • 因为 \((a+c)-(b+d)=(a-b)+(c-d)\) ,减法同理。
  • \(a\equiv b\and c\equiv d\Rightarrow ac\equiv db\pmod m\)(可乘性)
    • \(ac-bd=(a-b)c+b(c-d)\)
  • \(a\equiv b\Rightarrow a^n\equiv b^n\pmod m\)(同幂性)
    • 例如 \(2\equiv -1\pmod 3\) ,有 \(2^n\equiv (-1)^n\pmod 3\) ,于是这意味着 \(2^n-1\)\(3\) 的倍数当且仅当 \(n\) 是偶数。
  • \(ad\equiv bd\Leftrightarrow a\equiv b\pmod m,\gcd(m,d)=1\)(互质可除性)
    • 我们可以找到 \(dd'+mm'=1\) 的一组解,于是我们用 \(d'\) 乘同余式两边,得到 \(add'\equiv bdd'\pmod m\),因为 \(dd'\equiv 1\pmod m\) ,所以 \(a\equiv b\pmod m\)
    • 注意到 \(d'\) 的作用非常像 $\frac{1}{d} $ ,称 \(d\) 是模 \(m\) 意义下的逆元,记作 \(inv(d,m),d^{-1}\)
  • \(ad\equiv db\pmod {md} \Leftrightarrow a\equiv b\pmod m,d\not=0\)(模可除性)
    • \(a\bmod m=b\bmod m\Leftrightarrow d(a\bmod m)=d(b\bmod m)\Leftrightarrow da\bmod md=db\bmod md\)
  • \(ad\equiv bd \pmod m\Leftrightarrow a\equiv b\pmod {\frac{m}{\gcd(m,d)}}\)(裴蜀性)
    • 因为 \(dd'+mm'=\gcd(d,m)\) ,于是 \(dd'\equiv \gcd(d,m)\pmod m\) ,用 \(d'\) 乘两边可得 \(a\gcd(d,m)\equiv b\gcd(d,m)\pmod m\)
  • \(a\equiv b\pmod {md}\Rightarrow a\equiv b\pmod m\) (模数大变小)
    • 因为 \(md\) 的所有倍数也是 \(m\) 的所有倍数。
  • \(a\equiv b\pmod m\and a\equiv b\pmod n\Leftrightarrow a\equiv b\pmod {lcm(m,n)}\)\(m,n>0\)(模数小变大)
    • 这意味着,如果我们知道了 \(a\equiv b\pmod {18,12}\) 可以立即推出 \(a\equiv b\pmod {36}\) ,这是因为 \(a-b\)\(m,n\) 的公倍数,也是 \(lcm(m,n)\) 的公倍数。
  • \(a\equiv b\pmod{mn} \Leftrightarrow a\equiv b\pmod m\and a\equiv b\pmod n,\gcd(m,n)=1\)(模数分解性)
    • 例如:\(a\equiv b\pmod {100}\) 当且仅当 \(a\equiv b\pmod 4\and a\equiv b\pmod {25}\) ,换一种方式说:如果我们知道了 \(x\bmod 4,x\bmod 25\) ,那么就能确定 \(x\bmod 100\) 。这就是 中国剩余定理

进一步地,\(a\equiv b\pmod m\Leftrightarrow a\equiv b\pmod {p^{m_p}},\forall p\)

$P $ 表示素数集。\(P=\{2,3,5,7,11,13,17,19,23,29...\}\)

剩余类:模 \(n\) 同余的所有数构成的等价类称为模 \(n\)剩余类。当我们在模 \(n\) 意义下讨论这些数时它们等价。模 \(n\)\(i\) 的剩余类记作 \(K_i\) 。显然模 \(n\) 的剩余类有 \(n\) 个,分别为 \(K_0,K_1,..,K_{n-1}\)

完全剩余系:从 \(n\) 个模 \(n\) 剩余类中各选一个数 \(a_0,a_1,...,a_{n-1}\) ,它们构成模 \(n\) 的完全剩余系。

简化剩余系:从与 \(n\) 互质的剩余类中各选一个数 \(a_1,a_2,...,a_{\varphi(n)}\) ,它们构成模 \(n\) 的简化剩余系。

posted @ 2022-09-10 15:53  hs_wfz_orz  阅读(108)  评论(0编辑  收藏  举报