在介紹威爾遜定理之前,我們先給出乙個引理:
如果p
pp是素數,正整數a
aa是其自身模p
pp的逆,當且僅當a≡1
(mod
p)a\equiv1(mod\ p)
a≡1(mo
dp)或者a≡−
1(mo
dp)a\equiv1(mod\ p)
a≡−1(m
odp)
.證明:如果a≡1
(mod
p)a\equiv1(mod\ p)
a≡1(mo
dp)或a≡−
1(mo
dp)a\equiv1(mod\ p)
a≡−1(m
odp)
,則a 2≡
1(mo
dp)a^2\equiv1(mod\ p)
a2≡1(m
odp)
, 所以a
aa是其自身模p
pp的逆。反之,如果a
aa是其自身模p
pp的逆,即a2≡
1(mo
dp)a^2\equiv1(mod\ p)
a2≡1(m
odp)
,則( a2
−1)m
odp=
0(a^2-1)\ mod\ p=0
(a2−1)
modp
=0,因為p
pp是素數,所以(a−
1)mo
dp=0
(a-1)\ mod\ p=0
(a−1)m
odp=
0或者(a+
1)mo
dp=0
(a+1)\ mod\ p=0
(a+1)m
odp=
0,因此a≡1
(mod
p)a\equiv1(mod\ p)
a≡1(mo
dp)或a≡−
1(mo
dp)a\equiv1(mod\ p)
a≡−1(m
odp)
.接著,我們再給出威爾遜定理的定義:
威爾遜定理 (wilson』s theorem):如果p
pp是素數,則(p−
1)!≡
−1(m
odp)
(p-1)!\equiv-1(mod\ p)
(p−1)!
≡−1(
modp
)同時,威爾遜定理的逆也是成立的,它可以這麼表述:
設p
pp是正整數且p≥2
p\ge2
p≥2,如果(p−
1)!≡
−1(m
odp)
(p-1)!\equiv-1(mod\ p)
(p−1)!
≡−1(
modp
),則p
pp是素數。
顯然威爾遜定理在計算機鄰域的最大作用就是給出了乙個素數判定的條件,光說不練假把式,下面我們將展示一道例題來真正了解下,威爾遜定理的使用。
acm central european programming contest 2008(hdoj 2973)
這道題的大體題意是:求出這個表示式的值
我們很容易看出來這個3k+
63k+6
3k+6
和3 k+
73k+7
3k+7
就差了1,而3k+
63k+6
3k+6
又是階乘的形式,非常明顯的乙個威爾遜定理的應用,
求解這道題時我們我們先判斷3k+
73k+7
3k+7
是不是素數,對於單個表示式而言,是素數的話值為1,不是則為0;
那麼我們直接打表計算字首和就ok。
ac**如下:
#include
#include
#include
#include
using
namespace std;
const
int maxn =
1e5+5;
int ans[maxn]
;bool
isprime
(int n)
return
true;}
intmain()
while
(case--)
}
威爾遜定理
而要解這個問題,使用窮舉或暴搜的方法顯然不可取。若要優雅而巧妙地解決這個問題,就需要用到乙個關於素數的著名結論 威爾遜定理 wilson s theorem 十八世紀中葉,一位英國法官約翰 威爾遜爵士,發現了數論中一種極為罕見的關係 取從1到某個質數所有連續正整數的乘積,例如從1乘到11,即11的階...
數學 數論 四大定理之威爾遜定理
威爾遜定理 當 p 1 1 mo dp p 1 1 mod p 時,pp 為素數。p p 1 1 p p 1 1即 p 1 p 1 1 mo dp p 1 p 1 1 m odp 證明 靜下心看 充分性 p 1 1 modp p p 1 1 p 1 1 mo dp p p 1 1假設pp 不是質數,...
Fansblog 威爾遜定理
題意 給乙個質數 p 找小於 p 的最大質數 q 並求 q modp p,q epsilon 10 9,10 題解 威爾遜定理 乙個數 n 若是質數,則有 n 1 equiv n 1 mod n 於是可以先令 ans p 1 再對 p 1 到 q 的數對 p 求逆元。p 到 q 之間的距離不會超過3...