2
1

ウィルソン素数とウィルソンの定理

Last updated at Posted at 2024-07-21

こんにちは|こんばんは。カエルのアイコンで活動しております @kyamaz :frog: です。

はじめに

人名がついた「●●素数(●●は人の名前)」という素数を紹介する第7弾です。これまでの6つのエントリは脚注にリンクを貼っておきます。123456

このあとのプログラムで素数列を利用するため、ワンライナーで素数列を定義しておきます。

素数列を生成する
ghci> p=2:3:5:5#p;m#(a:b:x)=[n|n<-[a^2..b^2-2],(mod (n+1) 6)*(mod (n-1) 6)==0,gcd n m<2]++(m*b)#(b:x)

ウィルソン素数

ウィルソン素数のWikiPediaによると、イングランドの数学者ジョン・ウィルソンに由来して命名されています。

ウィルソン素数の定義は以下のとおりです。

ウィルソン素数の定義
$p^2$ が $(p − 1)! + 1 $を割り切るような素数 $p$

後述の「ウィルソンの定理」が示すとおり、$(p − 1)! + 1 $ を素数 $p$ で必ず割り切れますが、$p^2$でも割り切るような素数 $p$ です。既知のウィルソン素数は $2×10^{13}$まで調べられており $5, 13, 563$ の3つしか確認されていないそうです。ウィルソン素数は無限個存在し、さらに区間 $[x, y]$ に約 $\log(\log(y)/\log(x))$ 個存在すると予想されていますが、未解決問題です。

さて、この定義を用いて、ウィルソン素数のリストを出力してみましょう。この処理はいつもどおり停止しないため、適当なところでCtrl-Cで停止しています。
(※だいぶ大きな数まで調べても3つしか確認できていないので、$563$が出力されれば直ぐに停止してもよいでしょう。)

ghci> [n|n<-p, mod (product [2..(n-1)] +1) (n^2) == 0]
[5,13,563^CInterrupted.

ウィルソンの定理

「ウィルソンの定理」は、素数に関する次のような定理です。$p$ が大きくなるにつれて計算量が膨大になるため、素数判定に用いるには実用的な手法ではありません。

ウィルソンの定理
$p$ が素数ならば $(p − 1)! \equiv −1 \pmod p$ が成り立つ。

逆に、整数 $p \gt 1 $に対し、$(p − 1)! \equiv −1 \pmod p$ ならば、$p$ は素数である。

この定理の発見と証明の経緯は少し複雑でウィルソンの定理のWikiPediaによると、発見は10世紀のペルシャの数学者イブン・アル・ハイサム(アルハゼン)であったが、18世紀のイングランドの数学者ジョン・ウィルソンにより再発見され、その師匠であるエドワード・ウェアリングにより1770年に発表され、命名されたそうです。さらにその証明は、1773年にラグランジュが最初の証明を与えました。

(投稿後の追記)
ウィルソンの定理の証明は、https://mathlandscape.com/wilson-theorem/ に詳しく解説があります。

おわりに

ご一読いただきまして有り難うございます。
最後に、本稿を記載するために検証したHaskell環境を記しておきます。お手元の環境で検証する際に、動作が異なるときには参考になるかもしれません。

本稿の環境 本稿のために使用した環境は以下となります。
  • macOS: Sonoma 14.5 (chip: Apple M1)
  • GHCup: 0.1.30.0
  • GHC: 9.6.4

(●)(●) Happy Hacking!
/"" __""\

  1. ウォルステンホルム素数

  2. カレン素数とウッダル素数

  3. ヴィーフェリッヒ素数

  4. キネア素数とキャロル素数

  5. プロス素数とピアポイント素数

  6. ワグスタッフ素数と新メルセンヌ予想

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1