●素数判定/出力

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

情報

作者名:五十六
引用元:なし

概要

数値Sが素数かどうか判定したり、数値Sまでの素数配列を出力したりします。

サンプルプログラム

5の素数判定。
もし、それ=1ならば、「5は素数です」と言う。
違えば、「5は素数ではありません」と言う。
  
1000まで素数出力して言う。

//本体

●素数判定(Sを|Sの)
  もし、S<2ならば、0で戻る。
  Aとは数値=0。Bとは数値=0。判定配列とは配列=空。
  判定配列[0]=「1」。判定配列[1]=「1」。
  Aを2からFLOOR(SQRT(S))まで繰り返す
    もし、判定配列[A]≠空ならば、続ける。
    B=A×2。
    (B≦S)の間、判定配列[B]=1。B=B+A。
  もし、判定配列[S]=「1」ならば、「0」で戻る。
  違えば、「1」で戻る。

●素数出力(Sの|Sまで)
  もし、S<2ならば、空で戻る。
  Aとは数値=0。Bとは数値=0。判定配列とは配列=空。素数配列とは配列=空。
  判定配列[0]=「1」。判定配列[1]=「1」。
  Aを2からFLOOR(SQRT(S))まで繰り返す
    もし、判定配列[A]≠空ならば、続ける。
    B=A×2。
    (B≦S)の間、判定配列[B]=1。B=B+A。
  判定配列で反復、もし、対象=空ならば、素数配列に(回数-1)を配列追加。
  素数配列で戻る。


  • エラトステネスのふるいですね。繰り返しはFLOOR(SQRT(S))まででOKと思います。 -- SWinX (2008-10-23 13:59:09)
  • おおー!ありがとうございますー!修正しましたー! -- 管理人 (2008-10-23 21:31:44)
  • 反映ありがとうです。おせっかいついでに:変数「合計」って使ってる?:判定配列の0/1の意味を逆にすると初期化いらないかも:「S+1未満」と「S以下」対象が整数なら同じ意味だが前者は足し算分遅くなる? -- SWinX (2008-10-27 18:41:04)
  • 修正してみましたー!ありがとうございますー! -- 管理人 (2008-10-27 20:01:22)
名前:
コメント:


ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。