威尔逊定理

Posted qwq-qaq-tat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了威尔逊定理相关的知识,希望对你有一定的参考价值。

一、威尔逊定理

定理 1(Wilson 定理) 假设 \\(p\\) 是素数,\\(r_1,r_2,…,r_p-1\\) 是模 \\(p\\) 的既约剩余系,那么 \\(\\operatornameW(p)=\\prod\\limits_i=1\\limits^p-1r_i\\equiv -1\\pmod p\\)
证明:\\(p=2\\) 时结论显然成立,现在考虑 \\(p\\ge 3\\) 的情况。由于 \\(\\gcd(r_i,p)=1\\),所以我们可以知道:对于每个 \\(r_i\\) 有且仅有一个模 \\(p\\) 的逆元 \\(r_j\\)。使得 \\(r_i=r_j\\) 的充分必要条件是 \\(r_i^2\\equiv 1\\pmod p\\)。这说明 \\((r_i-1)(r_i+1)\\equiv 0\\pmod p\\)。由于素数 \\(p\\ge 3\\),所以前式相当于 \\(r_i\\equiv\\pm 1\\pmod p\\),并且这两个同余式无法同时成立。所以,在这组模 \\(p\\) 的既约剩余系中,除了 \\(r_i\\equiv \\pm 1\\pmod p\\) 的那两个元素之外,必定有逆元 \\(r_j\\ne r_i\\),所以这些一定是两两配对的。所以我们可以知道一共有 \\(r_1\\equiv 1\\pmod p\\)\\(r_p-1\\equiv -1\\pmod p\\),在 \\([2,p-2]\\) 的所有 \\(r_i\\) 都可以两两配对,组成 \\(\\fracp-12\\) 个 1。所以 \\(\\prod\\limits_i=1\\limits^p-1r_i\\equiv 1\\times -1\\times 1^\\fracp-12\\equiv -1\\pmod p\\)
证毕

二、扩展威尔逊定理

定理 2 (扩展威尔逊定理) 对于任意正整数 \\(m\\),设 \\(c=\\varphi(m)\\)\\(r_1,…,r_c\\) 是模 \\(m\\) 的既约剩余系,\\(p\\) 是任意素数,\\(\\operatornameW(m)=\\prod\\limits_i=1\\limits^cr_i\\equiv\\begincases-1\\pmod m&m=1,2,4,p^\\alpha,2p^\\alpha\\\\1\\pmod m&\\textotherwise\\endcases\\)

首先对正整数集进行划分。

引理 假设 \\(p\\) 是任意奇素数,\\(\\alpha\\) 是任意正整数,如果 \\(m\\ne 1,2^\\alpha,p^\\alpha,2p^\\alpha\\),那么一定可以被分为 \\(m=ab,2<a<b,\\gcd(a,b)=1\\)

证明:

因为 \\(m\\ne 1,2^\\alpha,p^\\alpha,2p^\\alpha\\) 时,我们有

\\(\\textCase \\mathrmI\\) \\(m\\) 没有质因数 2
\\(m=p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k,k\\ge 2,\\alpha_i\\ge 1,3\\le p_1<p_2<…<p_k\\),可以分解为 \\(m=(p_1^\\alpha_1)(p_2^\\alpha_2…p_k^\\alpha_k)\\)

\\(\\textCase \\mathrmII\\) \\(m\\) 有一个质因数 2
\\(m=2p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k,k\\ge 2,\\alpha_i\\ge 1,3\\le p_1<p_2<…<p_k\\),可以分解为 \\(m=2(p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k)\\)

\\(\\textCase \\mathrmIII\\) \\(m\\) 有多个质因数 2
\\(m=2^\\alphap_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k,k\\ge 1,\\alpha\\ge 2,\\alpha_i\\ge 1,3\\le p_1<p_2<…<p_k\\),可以分解为 \\(m=2^\\alpha(p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k)\\)

证毕

证明:分类讨论即可。

\\(\\textCase \\mathrmI\\) \\(m=1,2,4\\)
自己计算一下,成立。

\\(\\textCase \\mathrmII\\) \\(m=2^l,l\\ge 3\\)
易知当 \\(l=1,2\\) 时原定理成立。现在讨论 \\(l\\ge 3\\) 的情况。由于 \\(\\gcd(r_i,2^l)=1\\),所以我们可以知道:对于每个 \\(r_i\\) 有且仅有一个模 \\(2^l\\) 的逆元 \\(r_j\\)。使得 \\(r_i=r_j\\) 的充分必要条件是 \\(r_i^2\\equiv 1\\pmod 2^l\\)。这说明 \\((r_i-1)(r_i+1)\\equiv 0\\pmod 2^l\\)。注意到 \\(\\gcd(2,r_i-1)=\\gcd(2,r_i+1)=2\\)\\(\\gcd(\\fracr_i-12,\\fracr_i+12)=1\\),得知使得 \\(r_i=r_j\\) 的充分必要条件是 \\(\\fracr_i-12\\equiv 0\\pmod 2^l-2\\),或者 \\(\\fracr_i+12\\equiv 0\\pmod 2^l-2\\),也就是 \\(r_i\\equiv\\pm 1\\pmod 2^l-1\\) 因此,在这个模 \\(2^l\\) 的既约剩余系里当且仅当 \\(r_i\\equiv 1,2^l-1-1,2^l-1+1,2^l-1\\pmod 2^l\\) 时才有可能有 \\(r_i=r_j\\)。除此之外,必有 \\(r_i\\ne r_j\\),所以可以两两配对。所以,对于 \\(l\\ge 3\\),有 \\(\\operatornameW(m)=\\prod\\limits_i=1\\limits^c r_i\\equiv 1\\times (2^l-1-1)\\times (2^l-1+1)\\times (-1)\\times 1^\\fracc-42\\equiv 1\\pmod 2^l\\)
\\(\\textCase \\mathrmII\\) 成立。

\\(\\textCase \\mathrmIII\\) \\(m=p^l,p\\ge 3,l\\ge 1\\)
由于 \\(\\gcd(r_i,p^l)=1\\),所以我们可以知道:对于每个 \\(r_i\\) 有且仅有一个模 \\(2^l\\) 的逆元 \\(r_j\\)。使得 \\(r_i=r_j\\) 的充分必要条件是 \\(r_i^2\\equiv 1\\pmod p^l\\)。这说明 \\((r_i-1)(r_i+1)\\equiv 0\\pmod p^l\\)。由于 \\(p>2\\)\\(p\\mid r_i-1,p\\mid r_i+1\\) 不可能同时成立。所以必有 \\(p^l\\mid r_i-1\\) 或者 \\(p^l\\mid r_i+1\\),得知使得 \\(r_i=r_j\\) 的充分必要条件是 \\(r_i\\equiv\\pm1\\pmod p^l\\)。因此,在这个模 \\(p^l\\) 的既约剩余系里当且仅当 \\(r_i\\equiv 1,p^l-1\\pmod p^l\\) 时才有可能有 \\(r_i=r_j\\)。除此之外,必有 \\(r_i\\ne r_j\\),所以可以两两配对。所以此时有 \\(\\operatornameW(m)=\\prod\\limits_i=1\\limits^c r_i\\equiv 1\\times (-1)\\times 1^\\fracc-22\\equiv -1\\pmod p^l\\)
\\(\\textCase \\mathrmIII\\) 成立。


现在插播一条通知。我们知道,证明 \\(\\varphi(m)\\) 是积性函数是用这个表
然后现在我们还要用这个表。我们要证明 \\(\\operatornameW(m)\\) 是积性函数。
首先,我们依然有一个 \\(\\gcd(a,b)=1\\) 的前提。表下方的文字已经说明了每一行是一个模 \\(a\\) 的既约剩余系,每一列是一个模 \\(b\\) 的既约剩余系。并且,整个表是一个模 \\(ab\\) 的完全剩余系。那么,整个表的乘积模 \\(ab\\) 就是 \\(\\operatornameW(ab)\\)。同时,每一行的乘积模 \\(a\\)\\(\\operatornameW(a)\\),一共 \\(b\\) 行,所以 \\(\\operatornameW(ab)\\equiv \\operatornameW(a)^\\varphi(b)\\pmod a (1)\\)


\\(\\textCase \\mathrmIV\\) \\(m=2p^l,p\\ge 3,l\\ge 1\\)
因为 \\(\\gcd(2,p^l)=1\\),由 \\((1)\\),我们可以得到同余方程组

\\[\\operatornameW(m)\\equiv\\begincases\\operatornameW(p^l)^\\varphi(2)&\\pmod p^l\\\\\\operatornameW(2)^\\varphi(p^l)&\\pmod 2\\endcases \\]

由于 \\(\\operatornameW(p^l)\\equiv -1\\pmod p^l,\\operatornameW(2)\\equiv -1\\pmod 2,\\varphi(p^l)=(p-1)p^l-1,\\varphi(2)=1\\) 得到

\\[\\operatornameW(m)\\equiv\\begincases(-1)^1&\\pmod p^l\\\\(-1)^(p-1)p^l-1&\\pmod 2\\endcases \\]

由于 \\(p\\) 是奇数,所以 \\((p-1)p^l-1\\) 是偶数。所以,

\\[\\operatornameW(m)\\equiv\\begincases-1&\\pmod p^l\\\\1&\\pmod 2\\endcases \\]

所以 \\(\\operatornameW(m)\\equiv-1\\pmod 2p^l\\)
\\(\\textCase \\mathrmIV\\) 成立。

\\(\\textCase \\mathrmV\\)\\(m=ab,2<a<b,\\gcd(a,b)=1\\) 时,
容易知道一个 \\(m\\) 是否符合定理约束由其一些真因数决定,才可以推出 \\(m\\),所以不存在循环论证的情况,可以形成归纳论证结构。
因为 \\(\\gcd(a,b)=1\\),由 \\((1)\\),我们可以得到同余方程组

\\[\\operatornameW(m)\\equiv\\begincases\\operatornameW(a)^\\varphi(b)&\\pmod a\\\\\\operatornameW(b)^\\varphi(a)&\\pmod b\\endcases \\]

  1. \\(m\\) 没有质因数 2,\\(m=p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k,k\\ge 2,\\alpha_i\\ge 1,3\\le p_1<p_2<…<p_k\\),可以分解为 \\(m=(p_1^\\alpha_1)(p_2^\\alpha_2…p_k^\\alpha_k)\\)。那么有 \\(\\operatornameW(p_1^\\alpha_1)=-1,2\\mid\\varphi(p_1^\\alpha_1)\\)
    1. \\(k=2\\),那么 \\(m=p_1^\\alpha_1p_2^\\alpha_2,\\operatornameW(p_2^\\alpha_2)=-1,2\\mid\\varphi(p_2^\\alpha_2)\\)

      \\[\\operatornameW(m)\\equiv\\begincases(-1)^0&\\pmod p_1^\\alpha_1\\\\(-1)^0&\\pmod p_2^\\alpha_2\\endcases \\]

      所以有 \\(\\operatornameW(m)\\equiv 1\\pmod m\\)
    2. \\(k>2\\),那么 \\(m=p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k,\\operatornameW(p_2^\\alpha_2…p_k^\\alpha_k)=1,2\\mid\\varphi(p_2^\\alpha_2…p_k^\\alpha_k)\\)

      \\[\\operatornameW(m)\\equiv\\begincases(-1)^0&\\pmod p_1^\\alpha_1\\\\1^0&\\pmod p_2^\\alpha_2…p_k^\\alpha_k\\endcases \\]

      所以有 \\(\\operatornameW(m)\\equiv 1\\pmod m\\)
  2. \\(m\\) 有一个质因数 2,\\(m=2p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k,k\\ge 2,\\alpha_i\\ge 1,3\\le p_1<p_2<…<p_k\\),可以分解为 \\(m=2(p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k)\\)。那么有 \\(\\operatornameW(2)=-1,2\\not\\mid\\varphi(2),\\operatornameW(p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k)=1,2\\mid\\varphi(p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k)\\)

    \\[\\operatornameW(m)\\equiv\\begincases(-1)^0&\\pmod 2\\\\1^1&\\pmod p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k\\endcases \\]

    所以有 \\(\\operatornameW(m)\\equiv 1\\pmod m\\)
  3. \\(m\\) 有多个质因数 2,\\(m=2^\\alphap_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k,k\\ge 1,\\alpha\\ge 2,\\alpha_i\\ge 1,3\\le p_1<p_2<…<p_k\\),可以分解为 \\(m=2^\\alpha(p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k)\\)。那么有 \\(\\operatornameW(2^\\alpha)=1,2\\mid\\varphi(2^\\alpha)\\)

    \\[\\operatornameW(m)\\equiv\\begincases1^\\varphi(p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k)&\\pmod 2^\\alpha\\\\\\operatornameW(p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k)^0&\\pmod p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k\\endcases \\]

    由于 \\(\\operatornameW(p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k)\\equiv\\pm1\\pmod p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k\\),所以可以理解为

    \\[\\operatornameW(m)\\equiv\\begincases1&\\pmod 2^\\alpha\\\\1&\\pmod p_1^\\alpha_1p_2^\\alpha_2…p_k^\\alpha_k\\endcases \\]

    所以有 \\(\\operatornameW(m)\\equiv 1\\pmod m\\)

综上,\\(\\operatornameW(m)\\equiv 1\\pmod m\\) 总是成立。

\\(\\textCase \\mathrmV\\) 成立。

证毕

花了一天终于整理完了~ 好毒瘤啊。看不懂、有错误或者有更简便的做法的话可以联系我。

威尔逊定理x

威尔逊定理

在初等数论中,威尔逊定理给出了判定一个自然数是否为素数的充分必要条件。即:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p ),但是由于阶乘是呈爆炸增长的,其结论对于实际操作意义不大。

充分性

如果“p”不是素数,那么它的正因数必然包含在整数1, 2, 3, 4, … ,p− 1 中,因此gcd((p− 1)!,p) > 1,所以我们不可能得到(p− 1)! ≡ −1 (modp)。
 
必要性
 
若p是素数,取集合 A={1,2,3,...p -1}; 则A 构成模p乘法的缩系,即任意i∈A ,存在j∈A,使得:
( i j ) ≡ 1 ( mod p )那么A中的元素是不是恰好两两配对呢? 不一定,但只需考虑这种情况
x^2 ≡ 1 ( mod p )
解得: x ≡ 1 ( mod p ) 或 x ≡ p - 1 ( mod p )
其余两两配对;
故而
( p - 1 )! ≡ 1﹡( p -1 ) ≡ -1 ( mod p )
ps:
(我试了一下它只能判断n<=35......比暴力都弱......轻易不要用,理解就行啦)
代码如下:
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio> 
 4 #include<cmath>
 5 
 6 using namespace std;
 7 
 8 long long int f(int p)
 9 {
10     if(p==0)
11     return 1;
12     else return p*f(p-1);
13 }
14 int main()
15 {
16     int n;
17     scanf("%d",&n);
18     long long int ans=f(n-1);
19     if(ans%n==n-1)
20     printf("YES");
21     else 
22     printf("NO");
23     return 0;
24 }

 

以上是关于威尔逊定理的主要内容,如果未能解决你的问题,请参考以下文章

威尔逊定理

数论 (大数,小费马定理,欧拉定理,威尔逊定理,快速数论变换(NNT)模版)

威尔逊定理

威尔逊定理

威尔逊定理x

数论四大定理(转)