Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Re:エラトステネスの篩で参考 (#1564904) | 素数の分布は「ベンフォードの法則」に従っている | スラド
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

素数の分布は「ベンフォードの法則」に従っている」記事へのコメント

  • by Anonymous Coward
    これほどコンピュータ向きの題材は無いんでは?

    みんな、すぐに手元のコンピュータで確認してみるんだ

    エラトステネスの篩をアレンジしたプログラムなんかは簡単に作れるよね
    • 試しにプログラムを書かれる方がいるかと思いますので参考まで

      以前エラトステネスのフルイのプログラムを色々書いてみた事ありますが、10^10とかのオーダーになると単純にプログラムすると、10Gバイトメモリが必要ですが、フルイを分割してプログラムした方がメモリ節約&キャッシュの効きがよくて速いですよ。

      フルイの分割というのは、フルイの対象とする範囲を、例えば

      2~10^8
      10^8~2*10^8
      2*10^8~3*10^8
        ....
      99*10^8~100*10^8

      とか分割します。分割したそれぞれに対してフルイを実行します。

      (分割の単位は例です。分割の単位はベンチ行って最適化してください。

      • by Anonymous Coward on 2009年05月14日 9時06分 (#1564904)

        3や5でペナルティが大きいのはなんとなく分かる気がします。
        しかし2は単純な論理積演算で検証が可能ですが、それでも
        ペナルティは大きいんですか?

        親コメント
        • 2/3/5でそれぞれ比較は行っていませんが、10^9までの計算で
          次のような結果になっています。(10^10までは行ってません)

          bit単位のアクセスでメモリ節約: 2分20秒
          bit単位のアクセスに加えて2/3/5の例外扱いでメモリ節約: 2分59秒

          したがって2/3/5の例外扱いでペナルティが高いは大げさでした。
          bit単位でのアクセスはペナルティが高いに修正します。

          なお、2/3/5の例外扱いのために次のような読み替えテーブル
          を使ってます。説明は省きますが2/3/5の最小公倍数は30です
          ので、大体意味わかると思います。

          static const int_fast32_t yomikae_table[30]=
          {-1, 0,-1,-1,-1,-1,-1, 1,-1,-1,
            -1, 2,-1, 3,-1,-1,-1, 4,-1, 5,
            -1,-1,-1, 6,-1,-1,-1,-1,-1, 7};

          親コメント

クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人

処理中...