エラトステネスの篩
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方
出典検索?: "エラトステネスの篩" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL(2019年6月)

エラトステネスの篩 (エラトステネスのふるい、: Sieve of Eratosthenes) は、指定された整数以下の全ての素数を発見するための単純なアルゴリズムである。古代ギリシアの科学者、エラトステネスが考案したとされるため、この名がついている。
アルゴリズム2 から 120 までの数に含まれる素数を探すGIFアニメーション

指定された整数x以下の全ての素数を発見するアルゴリズム。このアニメーションでは以下のステップにそって 2 から 120 までの数に含まれる素数をさがしている。
ステップ 1

120要素の配列の1番目にfalseを、2番目以降に全てtrueを入れる。
ステップ 2

配列の先頭から順に走査し、trueの要素を見つけたらその添字pを素数リストに追加し、配列の p 2 {\displaystyle p^{2}} 以上のpの倍数番目をfalseにする。
ステップ 3

上記の篩い落とし操作を、走査している要素の添字がxの平方根に達するまで行う。
ステップ 4

最後までtrueだった要素の添字を素数リストに追加して処理終了。
具体例 x=120 の場合

配列の中身は、trueである添字がどれかを表記。残りは全てfalseである。
ステップ 1
配列={2から120まで}、探索リストの先頭値=2
ステップ 2-1
素数リスト={2}配列={3から119までの奇数}、探索リストの先頭値=3
ステップ 2-2
素数リスト={2,3}配列={2,3,5,7,11,13,17,19,23,25,29,31,35,37,41,43,47,49,53,55,59,61,65,67,71,73,77,79,83,85,89,91,95,97,101,103,107,109,113,115,119}次の素数=5
ステップ 2-3
素数リスト={2,3,5}配列={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,49,53,59,61,67,71,73,77,79,83,89,91,97,101,103,107,109,113,119}次の素数=7
ステップ 2-4
素数リスト={2,3,5,7}配列={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113}次の素数=11
ステップ 3
次の素数が 120 = 10.954 ⋯ {\displaystyle {\sqrt {120}}=10.954\cdots } に達しているのでステップ4へ
ステップ 4
11以上の、trueである要素の添字を素数リストに追加素数リスト={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113}
理論的考察

エラトステネスの.mw-parser-output ruby.large{font-size:250%}.mw-parser-output ruby.large>rt,.mw-parser-output ruby.large>rtc{font-size:.3em}.mw-parser-output ruby>rt,.mw-parser-output ruby>rtc{font-feature-settings:"ruby"1}.mw-parser-output ruby.yomigana>rt{font-feature-settings:"ruby"0}篩(ふるい)は x 1 / 2 {\displaystyle x^{1/2}} 以下の素数が既知のとき、( x 1 / 2 {\displaystyle x^{1/2}} 以上)x 以下の素数を決定するには、x 以下の整数で x 1 / 2 {\displaystyle x^{1/2}} 以下の素数の倍数を全て取り除けば(= 篩えば)よいことを意味する。このことから、包除原理を用いることによって x 以下の素数の個数に関する式を得ることができる。

具体的な式を書くために、いまx 以下の素数の個数を π ( x ) {\displaystyle \pi (x)} と書き、z 以下の全ての素数の積を P = P ( z ) {\displaystyle P=P(z)} とすると、この篩の操作が与える定量的な公式は π ( n ) − π ( n ) = ∑ d ∣ P ( n ) μ ( d ) ( [ n d ] − [ n d ] ) {\displaystyle \pi (n)-\pi \left({\sqrt {n}}\,\right)=\sum _{d\mid P({\sqrt {n}})}\!\mu (d)(\left[{\frac {\,n\,}{d}}\right]-\left[{\frac {\sqrt {n}}{d}}\right])}

となる( μ ( d ) {\displaystyle \mu (d)} はメビウス関数)。

より一般に、整数の集合A から、z 以下の素数の倍数全てを篩うとき、残る元の個数 S ( A , P ) {\displaystyle S(A,P)} は、 S ( A , P ) = ∑ d ∣ P ( z ) μ ( d ) 。 A d 。 {\displaystyle S(A,P)=\sum _{d\mid P(z)}\!\mu (d)\left|A_{d\,}\right|}

と表すことができる。ここで A d {\displaystyle A_{d}} は A の元で d で割り切れるもの全体の集合を表す。この定式化はルジャンドルの篩ともよばれる。

再び先の素数の個数の評価について述べれば、 z ≤ n {\displaystyle z\leq {\sqrt {n}}} のとき、不等式 π ( n ) − π ( z ) + 1 ≤ ∑ d ∣ P ( z ) μ ( d ) [ n d ] {\displaystyle \pi (n)-\pi (z)+1\leq \sum _{d\mid P(z)}\!\mu (d)\left[{\frac {\,n\,}{d}}\right]}


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:14 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef