第18問 素数判定(約数の個数)
素数とは「1とその数自身でしか割り切れない数」で、これは「約数がちょうど2個ある数」と言いかえられます。1からnまで順に割ってみて約数の個数を数え、n=13が素数かどうかを表示しよう(3か所の穴をうめよう)
難易度:★★★★★(5/難しい)。共通テスト「情報I」で使われるDNCL(共通テスト用プログラム表記)の穴埋め問題です。JavaScriptを有効にすると、このページでプログラムを組み立てて実行しながら解けます。
プログラム
n = 13
yakusu = 0
i を 1 から n まで 1 ずつ増やしながら繰り返す:
amari = n [A] i
もし amari == 0 ならば:
yakusu = yakusu [B] 1
もし yakusu [C] 2 ならば:
表示する("素数です")
そうでなければ:
表示する("素数ではありません")
空欄 [A]・[B]・[C] に当てはまるものを、次の選択肢から選びます。
選択肢
ヒント
n を i でわったあまりが0なら、i は n の約数です。約数の個数を数え、それがちょうど2個(1と自分自身のみ)なら素数、と考えよう
解答
- 空欄 [A] …
%
- 空欄 [B] …
+
- 空欄 [C] …
==
よくある間違い
- [A]
/ [B]+ [C]== … 割り算の答えでは「割り切れるかどうか」は分かりません。わったあまりが0かを見たいので % を使います
- [A]
% [B]* [C]== … yakusu は0から始まるので掛け算では0のまま増えません。約数を1個ずつ + で数えます
- [A]
% [B]+ [C]> … 「約数が2個より多い」だと、約数がたくさんある数まで素数と判定してしまいます。ちょうど2個(==)が素数の条件です
- [A]
% [B]+ [C]>= … 「約数が2個以上」だと、約数を多く持つ合成数もすべて素数になってしまいます。ちょうど2個だけを == で判定します
ほかの問題