Wilson 定理

Wilson 定理

对于素数 \(p\)\((p-1)!\equiv-1(\bmod p)\)

我们简单证明一下。

因为 \(p\) 是素数,所以 \(1\sim p-1\) 都有逆元。互为逆元的东西乘积是 \(1\),我们只需要考虑那些 \(a\equiv a^{-1}(\bmod p)\) 的数,也就是说 \(a^2\equiv1(\bmod p)\),也就是 \((a-1)(a+1)\equiv 0(\bmod p)\),所以 \(a=\pm 1\) 需要特殊考虑,而它们的乘积是 \(-1\),所以 \((p-1)!\equiv-1(b\mod p)\)

事实上,

\[(p-1)!\equiv\begin{cases} -1,&p\in Prime\\ 2,&p=4\\ 0,&else \end{cases} \]

下面的内容大概就是照着 OI-wiki 过一遍。

阶乘余数

定义 \((n!)_p\) 表示去除 \(1\sim n\) 当中所有的 \(p\) 因子之后得到的乘积,求 \((n!)_p\bmod p\)

你考虑把这个东西写出来长成什么样子。

\[1,2,\dots,p-1,1,1,2,\dots,p-1,2,\dots, \]

也就是说,每一个循环节本身都是 \((p-1)!\),这部分是 \((-1)^{\lfloor\frac np\rfloor}\),但是除此以外还剩下 \((\lfloor\frac{n}{p}\rfloor!)_p(n\bmod p)!\)

所以,如果我们预处理出 \(x!\bmod p,x=1,2\dots,p-1\),那么我们就可以 \(O(\log_pn)\) 地回答询问。

复杂度 \(O(p)-O(\log_pn)\)

含有 \(p\) 的个数

\(v_p(n!)\) 表示 \(n!\) 当中分解出的 \(p\) 的个数。

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

这个写出来的形式很有把 \(n\) 写成 \(p\) 进制的感觉。

如果我们设 \(n=(a_k\dots a_0)_p\),那么

\[v_p(n!)=\sum_{i=1}^ka_i\sum_{j=0}^{i-1}p^i=\sum_{i=1}^ka_i\frac{p^i-1}{p-1}=\frac{n-S_p(n)}{p-1} \]

这式子很好看。

一个自然的推论是

\[v_p\left(\binom{n}{m}\right)=\frac{S_p(m)+S_p(n-m)-S_p(n)}{p-1} \]

分子的意义是,计算 \(m+(n-m)\) 时出现的进位次数,也可以认为是 \(n-m\) 借位的次数。

exWilson

\[(p^a!)_p\equiv\begin{cases} 1,&p=2\land a\ge 3\\ -1,&else \end{cases}(\bmod p^a) \]

我们考虑跟 Wilson 定理类似的方式,考察 \(x^2\equiv1(\bmod p^a)\) 的解。

你发现,当 \(p=2,a=1\) 时仅有一根 \(1\)

\(p=2,a\ge 3\) 时有四根 \(\pm1,2^{a-1}\pm1\)

其他情况,有两根 \(\pm1\)

先到这里吧。

posted @ 2024-06-18 20:32  PYD1  阅读(21)  评论(0)    收藏  举报