考慮做者太懶了,博客裏面的同餘符號都用等號代替 qwqapp
威爾遜定理大概是這麼個東西:優化
\[(p-1)!=-1(mod ~~ p)\]spa
其中 p 固然是質數辣~博客
而後咱們考慮證實?io
首先:class
\[p-1=-1(mod ~~ p)\]di
那麼咱們只須要證實 \((p-2)!=1 (mod~~ p)\) 就行了...display
也就是說,除去 1 後,若是 \(2,3,...,p-2\) 可以兩兩配對,且每對數乘積 模 p 後爲 1 的話,威爾遜定理就成立了,而後咱們考慮這其實就是對於 \(2,3,...,p-2\) 去找 模 p 意義下的逆元啊...math
而後考慮一下二次剩餘裏面的衍生芝士咱們能夠知道對於 \(x^2=1\) 只有兩個解(1,p-1),而這兩個數已經被咱們安排掉了,也就是說 \(2,3,...,p-2\) 中不存在某個數的逆元是本身自己...play
而後咱們還知道逆元有惟一性與互反性,因而乎這些數天然是一一對應的辣~
證畢!
這個...顯然能夠用在階乘求解上?
可是用途不廣...可能能夠用來優化快速階乘? XD
咱們考慮這個式子已經成立了:
\[(p-1)!=-1(mod ~~ p)\]
那麼咱們如今要求的是:
\[n!~(mod ~~ p)\]
而後咱們考慮威爾遜定理能怎麼用進去...
(如今咱們不考慮 \(n=p-1\) 或 \(p-2\) 的極端狀況,\(n=p-1\) 時答案爲 \(p-1\) ,\(n=p-2\) 時 答案爲 \(1\) ,可特判)
首先:
\[n! ·\Big( (n+1)(n+2)...(p-1)\Big) =-1(mod~~ p)\]
咱們令 \(p-n =x\) :
\[n! ·\Big( (p-x+1)(p-x+2)...(p-1)\Big) =p-1(mod~~ p)\]
那麼:
\[\begin{aligned}( n!)'=&(p-x+1)(p-x+2)...(p-2)\\=&(-1)^{x-2}(x-1)(x-2)...(2)\\=&(-1)^x (x-1)!\\=& (-1)^{p-n}(p-1-n)! \\=& (-1)^{n+1}(p-1-n)! \end{aligned}\]
上面 \(p-x+1\) 變到 \(x-1\) 其實就是把負號提出來了...
而後咱們發現只要求出 \((p-1-n)!\) 而後乘上 \((-1)^n\)
這樣的優化...可能沒什麼用?可是也是優化就是了...