首页 > 其他分享 >威尔逊定理

威尔逊定理

时间:2023-08-13 20:55:34浏览次数:35  
标签:int res 定理 威尔逊 pow ...... mod

威尔逊定理:若p为素数,则p可以整除(p-1)!+1。

用同余方程表示为:(p-1)! ≡ -1 (mod p)

证明如下

充分性:

当p=1时,(p-1)! ≡ 0 (mod p)

当p=4时,(p-1)! ≡ 2 (mod p)

当p>4时,当p为完全平方数时,设k²=p,探讨2k和p的大小,因为k²-2k在k>2的时候永远大于0,所以p>2k>k,所以(p-1)! ≡ 1*2*......*k*......*2k*......*(p-1) ≡ 0 (mod p)

当p不为完全平方数时,设p=a*b,因为p>a>b,所以(p-1)! ≡ 1*2*......*a*......*b*......*(p-1) ≡ 0 (mod p)。

必要性:

当p=2时,(p-1)! ≡ -1 (mod p)

当p>2时,因为p为质数,则根据费马小定理存在a有pow(a,p-2),只要a与pow(a,p-2)不同余,则pow(a,p-2)为a的逆元。

假设二者同余,则有a²与pow(a,p-1)同余于1,解出来a=1或者p-1(x² ≡ 1(mod p)的解只有1和p-1,所以假设不成立,得证。

威尔逊定理的应用:

若存在n>p,要求计算 n! 中除了能被p整除的其他所有正整数相乘在模 p 的环境下,可以利用分块计算,每块为p的长度,前p-1项为(p-1)!,最后一项系数为出现第i个(p-1)!的意思,大概这样:

 所以最后只要计算利用威尔逊定理,再计算(n/p)! 和最后的尾巴部分就好了。时间复杂度为o(p+logp n)。

代码如下:

int factmod(int n, int p) {
  vector<int> f(p);
  f[0] = 1;
  for (int i = 1; i < p; i++) f[i] = f[i - 1] * i % p;
  int res = 1;
  while (n > 1) {
    if ((n / p) % 2) res = p - res;
    res = res * f[n % p] % p;
    n /= p;
  }
  return res;
}

 

 

                                                                                                     

标签:int,res,定理,威尔逊,pow,......,mod
From: https://www.cnblogs.com/DLSQS-lkjh/p/17627163.html

相关文章

  • Lucas 定理
    组合意义天地灭。Lucas定理问题\(1\):给定\(n,m\in\mathbb{N}\)与\(p\in\mathbb{P}\),其中\(n\)与\(m\)相当大,而\(p\)则相对较小,要求计算\(\binom{n}{m}\bmodp\)的值。一般的预处理逆元以及递推的方法在\(n,m\)充分大时均会失效,我们需要新的工具来解决......
  • 大数定律和中心极限定理
    ......
  • 【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(13):Hamliton-Cay
    目录前言Hello!小伙伴!非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ 自我介绍ଘ(੭ˊᵕˋ)੭昵称:海轰标签:程序猿|C++选手|学生简介:因C语言结识编程,随后转入计算机专业,有幸拿过一些国奖、省奖…已保研。目前正在学习C++/Linux/Python学习经验:扎实基础+多做笔记+......
  • 广义容斥定理杂谈
    概念用语言描述,容斥原理求的是不满足任何性质的方案数,我们通过计算所有至少满足\(k\)个性质的方案数之和来计算。同样的,我们可以通过计算所有至少满足\(k\)个性质的方案数之和来计算恰好满足\(k\)个性质的方案数。这样的容斥方法我们称之为广义容斥原理。......
  • 二分图相关定理
    最长反链:一张有向无环图的最长反链为一个集合\(S\subseteqV\),满足对于\(S\)中的任意两个不同的点\(u,v\inS(u\nev)\),\(u\)不能到达\(v\),\(v\)也不能到达\(u\),且\(S\)的大小尽量大最小不可重链覆盖:在DAG中选出若干条链,经过每个点一次,且链数尽量少最小点覆盖:......
  • 欧拉函数&欧拉定理
    欧拉函数互质:对于$\foralla,b\in\mathbb{N}$,若\(a,b\)的最大公因数为\(1\),则称\(a,b\)互质。欧拉函数:即$\varphi(N)$,表示从\(1\)到\(N\)中与\(N\)互质的数的个数。在算术基本定理中,任何一个大于\(1\)的整数都可以唯一分解为有限个质数的乘积,......
  • 中国剩余定理及其扩展
    $$\left{\begin{aligned}x_1=a_1\(mod\m_1)\x_2=a_2\(mod\m_2)\.\qquad\qquad\.\qquad\qquad\.\qquad\qquad\x_n=a_k\(mod\m_k)\end{aligned}\right.$$中国剩余定理算法流程计算所有模数的积M;对于第i个方程:a.计算$n_i\=......
  • Lucas定理
    Lucas定理:主要是求$C_{n}^{m}$在模$p$情况下($mod\,p$)(一般$p$较小,而$n,m$较大的情况)公式:$C_{n}^{m}≡ C_{n\,mod\,p}^{m\,mod\,p}\timesC_{n/p}^{m/p} (mod\,p)$证明以后补吧就以这题来说明具体解法:题目LuoguP3807【模板】卢卡斯定理/Lucas定......
  • 兰道定理
    定义竞赛图的比分序列是将竞赛图每个点的出度从小到大排列得到的序列。所谓兰道定理,即一个长度为\(n\)的序列\(\{s_i\},s_i\les_{i+1}\)是合法的比分序列当且仅当\(\forallk,\sum_{i=1}^ks_k\geC(k,2)\)进一步的一个竞赛图强连通的充要条件是:把它的所有顶点按照入度d从小到大......
  • 动量定理Forexclub总结的交易规则
    动量定理策略是一种趋势策略,基于周线图中的“三烛台”形态(上涨或下跌)进行交易。Forexclub总结的交易规则如下:1. 下一个烛台必须比上一个烛台大,以确认趋势存在。2. 多奇烛台(不带主体的烛台)不考虑在内。3. 止损设置在序列中第一根蜡烛线的收盘水平。4. 止盈是最后一个烛台的5......