*情報 作者名:五十六 引用元:なし *概要 数値Sが素数かどうか判定したり、数値Sまでの素数配列を出力したりします。 *サンプルプログラム 5の素数判定。 もし、それ=1ならば、「5は素数です」と言う。 違えば、「5は素数ではありません」と言う。 1000まで素数出力して言う。 *//本体 ●素数判定(Sを|Sの) もし、S<2ならば、0で戻る。 Aとは数値=0。Bとは数値=0。合計とは数値=0。判定配列とは配列=空。 Aを2からSまで繰り返す、判定配列[A]=1。 Aを2からFLOOR(SQRT(S))まで繰り返す もし、判定配列[A]≠「1」ならば、続ける。 B=A×2。 (B<(S+1))の間、判定配列[B]=0。B=B+A。 判定配列[S]で戻る。 ●素数出力(Sの|Sまで) もし、S<2ならば、空で戻る。 Aとは数値=0。Bとは数値=0。合計とは数値=0。判定配列とは配列=空。 Aを2からSまで繰り返す、判定配列[A]=1。 Aを2からFLOOR(SQRT(S))まで繰り返す もし、判定配列[A]≠「1」ならば、続ける。 B=A×2。 (B<(S+1))の間、判定配列[B]=0。B=B+A。 素数配列とは配列=空。 判定配列で反復、もし、対象=「1」ならば、素数配列に(回数-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) #comment() ----