情報
作者名:五十六
引用元:なし
概要
数値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)
最終更新:2008年10月27日 20:01