1. 程式人生 > 其它 >威爾遜定理學習筆記

威爾遜定理學習筆記

定理

當且僅當 \(p\) 是質數時, \((p-1)! \equiv -1 \pmod p\)

證明

首先對於 \(p < 5\) 時,直接證即可。

對於 \(p \ge 5\) ,分成以下幾種情況:

  1. \(p\) 為合數但不為質數的平方,則 \(p\) 可以表示成 \(a\times b\) ,其中 \(a,b\) 都是 \(\le p\) 的不同的整數,在 \((p-1)!\) 中出現過,所以 \(ab | (p-1)!\) ,得 \((p-1)! \not\equiv -1 \pmod p\) ,定理成立。

  2. \(p\) 為質數的平方,設 \(p=t^2\) ,其中 \(t\)

    是小於 \(p\) 的質數,\(\because p \ge 5\)\(\therefore t \ge 3\) 。在 \(1\)\(p-1\) 中,\(t\) 作為質因數出現在 \(t\), \(2t\), \(3t \dots t(t-1)\) 之中,共 \(t-1\) 個。\(\because t \ge 3\)\(\therefore t-1 \ge 2\)\(t^2|(p-1)!\) ,故 \((p-1)! \not \equiv -1 \pmod p\) ,定理成立。

最後一種情況: \(p\) 為質數。則 \((p-1)!=1 \times (p-1) \times [2 \times 3 \times \dots \times(p-2)]\)

\(\because\) \(p \ge 5\)\(p\) 是質數, \(\therefore\) \(2\)\(p-2\) 有偶數個數。假設其中有兩個數在模 \(p\) 意義下的逆元相同,設這兩個數為 \(a,b\) ,逆元為 \(t\) ,則可得:

\[at \equiv bt \equiv 1\pmod p \]

\(p|t(a-b)\)\(\because\) \(a,b,t <p\)\(\therefore p\not| t\)\(p\not | (a-b)\) ,故 \(p\not |t(a-b)\) ,矛盾。故 \(2\)\(p-2\)

中每個數的逆元各不相同。

再證 \(2\)\(p-2\) 中每個數逆元不為自己,假設 \(k\) 的逆元是它本身,則有

\[k^2\equiv1\pmod p \]

\(p|k^2-1\) ,因式分解變成 \(p|(k+1)(k-1)\) ,則 \(p|k+1\)\(p|k-1\) ,解得 \(k=1\)\(k=p-1\) ,都不在 \(2\)\(p-2\) 的範圍內,故 \(k\) 不存在。

\(\therefore\) \(2\)\(p-2\) 中每個數模 \(p\) 意義下的逆元互不相同,且不為自己,同時也在 \(2\)\(p-2\) 中,於是:

\[(p-1)!\equiv 1 \times (p-1) \times [2 \times 3 \times \dots \times(p-2)] \equiv p-1\equiv-1 \pmod p \]

得證。

一些題目

(p-k) 的階乘

注:這個網站可能打不開。

題意:這是一道提交答案題,\(p\) 為質數,設

\[S(p)=\displaystyle\sum_{1\le k<5}(p-k)! \bmod p \]

\(\displaystyle\sum_{1 < p<10^8}S(p)\) , \(p\) 是質數。

思路

我們可以把上面的式子在模 \(p\) 的意義下拆一下:

\[\sum_{1 \le k < 5}(p-k)! \equiv(p-5)! \times(1+(p-4) + (p-4)(p-3)+ (p-4)(p-3)(p-2) + (p-4)(p-3)(p-2)(p-1)) \pmod p \]

看著複雜,但我們是在模 \(p\) 的意義下運算,所以每幾個二次二項式的乘積對 \(p\) 取模相當於常數項對 \(p\) 取模,上式變為:

\[\sum_{1\le k < 5}(p-k)! \equiv (p-5)!(1-4+12-24+24) \pmod p \] \[\sum_{1\le k < 5}(p-k)! \equiv 9(p-5)! \pmod p \]

我們希望 \((p-5)!\) 可以變為 \((p-1)!\) ,這樣我們就能和威爾遜定理扯上關係了,於是:

\[\sum_{1\le k < 5}(p-k)! \equiv 9(p-1)! \div[(p-4)(p-3)(p-2)(p-1)] \pmod p \] \[\sum_{1\le i < 5}(p-k)! \equiv 9(p-1)! \div24 \pmod p \] \[\sum_{1\le i < 5}(p-k)! \equiv -9 \times 24^{-1} \pmod p \]

於是只用求逆元即可,複雜度 \(O(n \log p)\) ,大概跑個幾秒就出來了。