ちょっとメモ
次の枠内ア〜キはある正の整数Nについて、素数かどうかを判定するプログラムによる処理を言葉で表したものです。特に支持がない場合には、アから順に処理をします。このとき、次の問いに答えなさい。
<素数かどうかの判定をする> ア 3以上の整数Nを打ち込む。 イ Aは2とする。 ウ RはNをAで割った余りとする。ただし、商は整数の範囲とする。 エ Rが0ならば「素数ではない」と表示し、Rが0でなければ、そのまま次へ。 オ Aを1増やして、それを新しいAと決める。 カ AがNより小さければ、 ウ へ。AがNと等しければ、そのまま次へ。 キ 「素数である」と表示し、処理を終了する。
① このプログラムを実行するとき、アでNに13を打ち込むと、オの処理は何回行われますか。この問題は答えだけを書いてください。
② 上の<素数かどうかの判定をする>プログラムは、処理の回数が多いので、少なくなるように工夫したいと思っています。そこで、「素数かどうかを判定するには、2からNで割らなくても、2から√N(ルートN)を超えない最大の整数まで割れば判定できる。」という事実を用いて、ウ〜カの部分を
a Bは√N(ルートN)を超えない最大の整数とする。 b TはNをAで割った余りとする。ただし、商は整数の範囲とする。 c Tが0ならば「素数ではない」と表示し、Tが0でなければ、そのまま次へ。 d Aを1増やして、それを新しいAと決める。 e AがBより小さければ、bへ。AがBと等しければ、そのまま次へ。
とします。Nが37のとき、新しい処理のdの回数はもとの処理のオの回数より、何回少ないですか。
途中までで、規則性を見い出す!
素数とは、1とそれ自身の数以外の約数が無いもの
(例)1,3,5,7,11,13,17,19…