Excel VBA 数学教室ではアフィリエイトプログラムを利用して商品を紹介しています。

ウィルソンの定理

今回は正整数が素数であるための条件であるウィルソンの定理を証明しますが、その前に少し準備をします。m を合成数として、(m1)!m で割ったときの余り
(m1)!modm
を考えてみます。たとえば n=8 のときは
(81)!=7!=7654321
となりますが、8=24 と考えると、(81)! の因数の中に必ず 24 が含まれるので 8 で割り切れます。すなわち
(81)!0(mod8)
となります。このように平方数でない合成数を適当な 2 数 a,b(1>a>b>m) の積に分解すると
(m1)!=(m1)(m2)ab21
の中に必ず a,b が含まれるので、
(m1)!0(modm)
となります。m が平方数 a2 である場合は少しだけ複雑になります。たとえば m=9=32 の場合は
(91)!=8!=87654321
となりますが、因子の1つが 6=23 なので、(91)! の中に 3 が2つ含まれていることになり、(91)!9 で割り切れます:
(91)!0(mod9)
これは 9123 であるから割り切れたのです。そんなことは、ほとんど自明であるように思えますが、こうならない例が1つだけあるのです。それは m=4=22 のときで、
(41)!=321
ですから、41<22 であるために、(41)! の中に 2 という因子は1つしか含まれておらず、4 で割り切ることができません。
(41)!0(mod4)
念のために、こういう例外が m=4 だけなのかどうかを確認しておきます。

m=a2 とおくと、
(a21)!=(a21)(a22)a21
であり、この中に 2a が含まれる条件は
a212a
ですから、この 2 次不等式を解いて(もちろん a は正数です)
a1+2
すなわち a>3 のときに (a21)!a2 で割り切れることになります。
以上をまとめると、

【定理F2】m を合成数とすると
(m1)!{2(modm)(m=4)0(modm)(m4)

ウィルソンの定理

本題はここからです。p を素数としたときに (p1)!p で割ったときの余りはいくらになるかを考えます。たとえば p=7 のときに (71)! を計算すると
(71)!=6!=72061(mod7)
となります。p=11 のときは
(111)!=10!=3628800101(mod11)
このことから、p が素数のときには
(p1)!1(modp)
が成り立っているのではないかと推測できます。ウィルソンの定理 を証明してみましょう。

【定理F3:ウィルソンの定理】正整数 p が素数であるための必要十分条件は
(p1)!1(modp)

[証明] 前回記事より ap1
ap1(a1)(a2)(a(p1))(modp)
と因数分解できます。両辺の定数項を比較すると
1(1)p1(p1)!(modp)
となります。p1 は偶数なので (1)p1 の符号は正となり
(p1)!1(modp)
これで p が素数ならば (p1)!1 であることは示せましたが、p が素数でなくとも成り立つかもしれません。しかし先ほどの定理 F2 により、合成数 m については
(m1)!{2(modm)(m=4)0(modm)(m4)
となるので、1 と合同にはなりません。したがって、p が素数であるための必要十分条件は
(p1)!1(modp)
となります。(証明終)

とはいえ、ウィルソンの定理を素数判定に用いるのはのは実用的ではありません。たとえば 431 が素数であることを確かめようと思ったら 430! を計算しなくてはなりませんが、こんな巨大数を計算させると Excel でもオーバーフローしてしまいます。

【次の講座】≫ 二項合同方程式

エクセルや数学に関するコメントをお寄せください