威尔逊定理
定义
Wilson 定理:对于素数
证明
我们知道在模奇素数
对于整数
Wilson 定理指出
阶乘与素数
在某些情况下,有必要考虑以某个素数
只有当阶乘同时出现在分数的分子和分母中时,这个问题才有意义。否则,后续项
因此,要计算
用
通过学习如何有效地计算这种修正的阶乘,可以快速计算各种组合公式的值。
计算余数的算法
计算上述去掉因子
可以清楚地看到,除了最后一个块外,阶乘被划分为几个长度相同的块。
块的主要部分
总共有
最后一个部分块的值可以在
这只留下每个块的最后一个元素。如果隐藏已处理的元素,可以看到以下模式:
这也是一个修正的阶乘,只是维数小得多。它是:
因此,在计算修改的阶乘
如果预先计算阶乘
计算余数算法的实现
具体实现不需要递归,因为这是尾部递归的情况,因此可以使用迭代轻松实现。在下面的实现中预计算了阶乘:
因此有时间复杂度
如果空间有限,无法存储所有阶乘,也可以只存储需要的阶乘,对它们进行排序,然后计算阶乘
阶乘中素数的个数
如果想计算二项式系数模
Legengre 在 1808 年提供了一个公式,可以在
证明:将
因此得到实现:
很容易证明,这个公式与前面的部分使用了相同的想法。删除所有不包含因子
然后再次得到递归。
另一种其他地方比较常见的公式,用到了 p 进制下各位数字和:
与等比数列求和公式很相似。由于涉及各位数字和,利用数学归纳法可以轻松证明。
特别地,阶乘中 2 的幂次是:
Kummer 定理
组合数对一个数取模的结果,往往构成分形结构,例如谢尔宾斯基三角形就可以通过组合数模 2 得到。
如果仔细分析,p 是否整除组合数其实和上下标在 p 进制下减法是否需要借位有关。这就有了 Kummer 定理。
Kummer 定理:p 在组合数
特别地,组合数中 2 的幂次是:
Wilson 定理的推广
对于素数
依然考虑配对一个数与其逆元,也就是考虑关于
至此我们对 Wilson 定理的推广中的
下文两个推论中的
推论 1
对于素数
???note "证明"
证明:令
$$
\begin{aligned}
(n!)_p&=\prod_{1\leq r\leq n}'r\\
&=\left(\prod_{i=0}^{\lfloor n/p^q \rfloor -1}\prod_{1\leq j\leq p^q}'(ip^q+j)\right)\left(\prod_{1\leq j\leq N_0}'(\lfloor n/p^q\rfloor p^q+j)\right)\\
&\equiv ((p^q!)_p)^{\lfloor n/p^q\rfloor}(N_0!)_p\\
&\equiv (\pm 1)^{\lfloor n/p^q\rfloor}(N_0!)_p\pmod{p^q}
\end{aligned}
$$
将 $1\times 2\times 3\times \cdots \times n$ 记为 $(0\times p^q+1)\times (0\times p^q+2)\times \cdots \times (\lfloor n/p^q\rfloor p^q+N_0)$ 就得到了上述第二行。
至此得到了
推论 2
对于素数
其中
记
右边的分母中括号内的项均在模
例题
给定
若
设
则
若
设
则
因此
本页面主要译自博文 Вычисление факториала по модулю 与其英文翻译版 Factorial modulo p。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。
贡献者:@Tifa@queenwen@Great-designer@WenzelTian@Early
本页面最近更新:2/3/2023, 12:00:00 AM,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用