配列Aに対して次の手続を実行して、2≤h≤100である素数kだけを全て出力したい。
a、b、cに入るループの初期値、終値、増分として、適切な組合せはどれか。
for k = 2 to 100 step 1:
A [k ] = 1;
for m = 2 to 10 step:
for k = a to b step c :
A [k ] = 0;
for k = 2 to 100 step 1:
if A [k ]≠0:
print k ;
a | b | c | |
ア | 2 | m2 | 1 |
イ | 2m | 100 | m |
ウ | m | m2 | m |
エ | m2 | 100 | 1 |
答え イ
【解説】
この問題の処理はA [k ]が1ならk は素数、A [k ]が0ならk は素数でないとしていて、2番目のループ文はm の倍数は素数でないということで、該当するA [k ]の値を0としているので、2〜100の数の中で2と3は素数なので、最初に素数か調べるのは4であり、最初のm が2なので、for分の初期値は2m になる。
調べる範囲が100までなので、終値は100になり、増分はm になる。
【キーワード】
・ループ