エラトステネスの篩(ふるい)とは、素数を求めるアルゴリズムである。
2000年以上前に考案された方法ながら、ユークリッドの互除法と並んで現在でも応用されている重要な方法である。
エラトステネスとは紀元前3世紀頃の学者であり、地球の大きさを誤差数%以内で推定した事などで有名な人物である。エラトステネスの篩はそんな彼の名に由来し、古くは、1世紀~2世紀の数学者ニコマコスの著作「算術入門」において数回言及されている。例えば第13章で「これらの数の算出法はエラトステネスによって篩と呼ばれた、なぜなら……」などと記載がある[1]。(ただし「エラトステネスが考案した」と明言する記載ではないようだ?)
素朴ながらも確実にすべての素数を求めることができる、優秀なアルゴリズムである。合成数が次々に消去され、素数が残っていく様が「ふるいにかける」ようであるからこの名前がついた。
以下がそのアルゴリズムの概略である。
以上の作業を繰り返すことで素数を求めることができる。以下は100までの表。赤色が素数である。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 |
| 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
| 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
| 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 |
| 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 |
| 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 |
| 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 |
この表から、2,3,5,7,11,13,17,…が素数であることが分かった。
以上が義務教育で教わる内容である。
以下、応用例としてガウス整数と多項式、ゼータ関数の式変形について記述する。
ガウス整数とは、a,bを整数としてz'=a+biで表すことのできる数である。ガウス整数にも素数に対応する概念が存在し、ガウス素数と呼ばれる。ガウス素数は普通の素数と同じで、それ以上素因数分解することができない数である。こちらもエラトステネスの篩で求めることができる。
以下に出てくる「単元」とは、乗法の逆元を持つ元である。自然数なら1、整数なら1と-1、有理数なら0を除くすべての元である。体は0を除くすべての元が単元になる。
以下が上記のアルゴリズムで得られたガウス素数の表である。◉がガウス素数。
| O | O | O | O | O | ◉ | O | O | O | O | O | O | O | O | O | O | O | O | O | ◉ | O | O | O | O | O |
| O | O | O | O | O | O | ◉ | O | ◉ | O | O | O | ◉ | O | O | O | ◉ | O | ◉ | O | O | O | O | O | O |
| O | O | O | ◉ | O | ◉ | O | O | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | O | O | ◉ | O | ◉ | O | O | O |
| O | O | ◉ | O | O | O | O | O | ◉ | O | O | O | O | O | O | O | ◉ | O | O | O | O | O | ◉ | O | O |
| O | O | O | O | O | ◉ | O | ◉ | O | ◉ | O | O | O | O | O | ◉ | O | ◉ | O | ◉ | O | O | O | O | O |
| ◉ | O | ◉ | O | ◉ | O | O | O | O | O | ◉ | O | ◉ | O | ◉ | O | O | O | O | O | ◉ | O | ◉ | O | ◉ |
| O | ◉ | O | O | O | O | O | ◉ | O | O | O | ◉ | O | ◉ | O | O | O | ◉ | O | O | O | O | O | ◉ | O |
| O | O | O | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | O | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | O | O | O |
| O | ◉ | O | ◉ | O | O | O | ◉ | O | O | O | ◉ | O | ◉ | O | O | O | ◉ | O | O | O | ◉ | O | ◉ | O |
| O | O | ◉ | O | ◉ | O | O | O | O | O | ◉ | O | ◉ | O | ◉ | O | O | O | O | O | ◉ | O | ◉ | O | O |
| O | O | O | O | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | O | O | O | O |
| O | O | ◉ | O | O | O | ◉ | O | ◉ | O | ◉ | ◉ | i | ◉ | ◉ | O | ◉ | O | ◉ | O | O | O | ◉ | O | O |
| O | ◉ | O | O | O | ◉ | O | O | O | ◉ | O | -1 | 0 | 1 | O | ◉ | O | O | O | ◉ | O | O | O | ◉ | O |
| O | O | ◉ | O | O | O | ◉ | O | ◉ | O | ◉ | ◉ | -i | ◉ | ◉ | O | ◉ | O | ◉ | O | O | O | ◉ | O | O |
| O | O | O | O | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | O | O | O | O |
| O | O | ◉ | O | ◉ | O | O | O | O | O | ◉ | O | ◉ | O | ◉ | O | O | O | O | O | ◉ | O | ◉ | O | O |
| O | ◉ | O | ◉ | O | O | O | ◉ | O | O | O | ◉ | O | ◉ | O | O | O | ◉ | O | O | O | ◉ | O | ◉ | O |
| O | O | O | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | O | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | O | O | O |
| O | ◉ | O | O | O | O | O | ◉ | O | O | O | ◉ | O | ◉ | O | O | O | ◉ | O | O | O | O | O | ◉ | O |
| ◉ | O | ◉ | O | ◉ | O | O | O | O | O | ◉ | O | ◉ | O | ◉ | O | O | O | O | O | ◉ | O | ◉ | O | ◉ |
| O | O | O | O | O | ◉ | O | ◉ | O | ◉ | O | O | O | O | O | ◉ | O | ◉ | O | ◉ | O | O | O | O | O |
| O | O | ◉ | O | O | O | O | O | ◉ | O | O | O | O | O | O | O | ◉ | O | O | O | O | O | ◉ | O | O |
| O | O | O | ◉ | O | ◉ | O | O | O | ◉ | O | ◉ | O | ◉ | O | ◉ | O | O | O | ◉ | O | ◉ | O | O | O |
| O | O | O | O | O | O | ◉ | O | ◉ | O | O | O | ◉ | O | O | O | ◉ | O | ◉ | O | O | O | O | O | O |
| O | O | O | O | O | ◉ | O | O | O | O | O | O | O | O | O | O | O | O | O | ◉ | O | O | O | O | O |
上記の表から1±i、1±2i、2±i、3、3i、4±i、1±4i、…などがガウス素数であることが分かった。aを単元倍した元bを、aに同伴な元bと呼ぶ。例えば±(1+2i)、±(2-i)は互いに同伴なガウス素数である。
ガウス素数は0付近で美しい模様を描く。0から離れた部分も整数の素数と比べ均等に分布しており、一定のパターンが存在しているように見える。有限距離以内でガウス素数同士が隣接するかどうかなどが未解決問題として存在する。
既約多項式とは、それ以上小さな次数の多項式に因数分解できない多項式を指す。多項式環において既約多項式は素数と同様の働きを持つ。同じ多項式でも係数体により既約か可約か変化する。
整数を素数pで割ったあまりで分類すると有限体Fpになる。Fpの元を係数とする多項式f(x)∈Fp[x]を考える。例えば、F2係数多項式f(x)∈F2[x]は係数が0または1の多項式である(1+1=0に注意して計算する)。f(x)が既約であるかどうかをエラトステネスの篩を用いて列挙する事で判別できる。
準備として、多項式をその係数のみで表すことにする。例えば、F2[x]においてx3+x2+1 → 1101、(x+1)(x2+x)=x3+x → 11×110=1010。F3[x]において(x+2)(2x+1)=2x2+2x+2 → 12×21=222。単純な2進数や3進数とは異なることに注意。
| 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 |
| 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | 10000 |
| 10001 | 10010 | 10011 | 10100 | 10101 | 10110 | 10111 | 11000 |
| 11001 | 11010 | 11011 | 11100 | 11101 | 11110 | 11111 | 100000 |
この表からF2[x]において、x,x+1,x2+x+1,x3+x+1,x3+x2+1、x4+x+1,x4+x3+1、x4+x3+x2+x+1、…が既約多項式と分かった。
| 1 | 2 | 10 | 11 | 12 | 20 | 21 | 22 | 100 |
| 101 | 102 | 110 | 111 | 112 | 120 | 121 | 122 | 200 |
| 201 | 202 | 210 | 211 | 212 | 220 | 221 | 222 | 1000 |
| 1001 | 1002 | 1010 | 1011 | 1012 | 1020 | 1021 | 1022 | 1100 |
| 1101 | 1102 | 1110 | 1111 | 1112 | 1120 | 1121 | 1122 | 1200 |
| 1201 | 1202 | 1210 | 1211 | 1212 | 1220 | 1221 | 1222 | 2000 |
| 2001 | 2002 | 2010 | 2011 | 2012 | 2020 | 2021 | 2022 | 2100 |
| 2101 | 2102 | 2110 | 2111 | 2112 | 2120 | 2121 | 2122 | 2200 |
| 2201 | 2202 | 2210 | 2211 | 2212 | 2220 | 2221 | 2222 | 10000 |
モニックな多項式(最大次数の係数が1の多項式)に限定した表は以下のとおり。
| 1 | 2 | 10 | 11 | 12 | 20 | 21 | 22 | 100 |
| 101 | 102 | 110 | 111 | 112 | 120 | 121 | 122 | 200 |
| 201 | 202 | 210 | 211 | 212 | 220 | 221 | 222 | 1000 |
| 1001 | 1002 | 1010 | 1011 | 1012 | 1020 | 1021 | 1022 | 1100 |
| 1101 | 1102 | 1110 | 1111 | 1112 | 1120 | 1121 | 1122 | 1200 |
| 1201 | 1202 | 1210 | 1211 | 1212 | 1220 | 1221 | 1222 | 2000 |
| 2001 | 2002 | 2010 | 2011 | 2012 | 2020 | 2021 | 2022 | 2100 |
| 2101 | 2102 | 2110 | 2111 | 2112 | 2120 | 2121 | 2122 | 2200 |
| 2201 | 2202 | 2210 | 2211 | 2212 | 2220 | 2221 | 2222 | 10000 |
この表から、F3[x]においてx,x+1,x+2,2x+1,x2+1,x2+x+2,x2+2x+2,…が既約多項式と分かった。
1,2は単元なので、例えば(x2+2x+2)を2倍した式(2x2+x+1)は同伴な既約多項式である。これはちょうど有理数係数の既約多項式について、定数倍した式を同一の式と見なすことと対応する(有理数は0を除いた全ての数が単元であるため)。
これは環論の言葉でいえば、単項イデアル整域の素イデアルをリストアップするアルゴリズムである。上記の例のように全ての元をうまく並べることができるような環に対して流用することができる。自然数は環ではないが整数に拡張すれば一貫性が保たれる。
多項式環において、既約多項式は素数のような役割を持つためしばしば既約であるかどうかが問題になるが、一般に多項式の既約判定は難しい。しかし、Fp[x]で既約→Z[x]で既約→Q[x]で既約、が一般に成り立つので、既約判定の一つとして有限体係数に落とし込んで判定する方法がある。つまり、有理係数を定数倍して整数にし、適当な素数で合同をとることでQ[x]をFp[x]で判断する事が可能な場合がある。
F2[x]でx2+x+1が既約と分かったが、係数を2で割ったあまりが同じになる多項式、x2+3x+1, x2+x+3, x2+3x+3、…、あるいはF3[x]でx2+2x+2は既約だったが、係数を3で割ったあまりが同じになるx2+2x+5, x2+5x+2、…、などもZ[x]、ひいてはQ[x]において既約多項式である。F2[x]においてx3+x2+1が既約であると知っていれば、3x3+27x2+14x+7が既約多項式であるとすぐに判別できるのである。ただし、あらゆる素数pでFp上可約だがZ上既約という多項式も存在するので万能ではないという事に注意しなければならない。
エラトステネスの篩とは直接関係しないが、参考として記述する。
この関数は比較的シンプルな形をしているが様々な性質を持ち、数学の深淵に迫る関数の一つとして研究の対象となっている。この関数は素数とも関係しており、和を積に式変形する方法の一つにエラトステネスの篩のようなふるまいを見せるものがある。式変形は以下の通り。
1/2sζ(s)=1/2s+1/(2s×2s)+1/(2s×3s)+1/(2s×4s)+…
(1-1/2s)ζ(s)=1+1/3s+1/5s+1/7s+1/9s+1/11s+…
1/3s(1-1/2s)ζ(s)=1/3s+1/(3s×3s)+1/(3s×5s)+1/(3s×7s)+…
(1-1/3s)(1-1/2s)ζ(s)=1+1/5s+1/7s+1/11s+1/13s+1/17s+1/19s+1/23s+1/25s+…
1/5s(1-1/3s)(1-1/2s)ζ(s)=1/5s+1/(5s×5s)+1/(5s×7s)+…
(1-1/5s)(1-1/3s)(1-1/2s)ζ(s)=1+1/7s+1/11s+1/13s+…
…
…(1-1/11s)(1-1/7s)(1-1/5s)(1-1/3s)(1-1/2s)ζ(s)=1
ζ(s)=1/((1-1/2s)(1-1/3s)(1-1/5s)…)=1/(Πp(1-1/ps)) (pは素数)
このようにして合成数の項がエラトステネスの篩と同じ順番で次々と消去され、素数の項が左辺に累積していくことがわかる。
掲示板
4 ななしのよっしん
2020/05/09(土) 02:10:13 ID: /pi950eGS5
中尾ミエが唄う歌についての言及が一言あってもいいと思う。
5 ななしのよっしん
2021/09/20(月) 17:48:45 ID: jiwI5mLDw9
↑2355のやつか
6 ななしのよっしん
2021/11/27(土) 17:22:58 ID: LGfTEjbFKR
プログラミングの際は「各数字がnで割り切れるなら消去する」じゃなくて「数字をn個ずつ消去する」とすると高速になるらしい
前者は一部技術サイトで「似非エラトステネスの篩」と呼ばれているけど、果たして後者が実際のエラトステネスの意図した「真」なのかは文献を見てないからわからん
急上昇ワード改
最終更新:2025/12/07(日) 18:00
最終更新:2025/12/07(日) 18:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。