こんにちは。ECF代表のヒガです。
本記事では初心者向けアルゴリズムの演習問題を紹介しています。日頃のプログラミング学習にご活用ください。
はじめに
アルゴリズムとは、コンピューターに行わせる計算手順のことです。自在にプログラムを作るには、プログラム言語の文法の知識とともにアルゴリズムの考え方を身につけることが必要になります。
アルゴリズム技法習得の肝は「繰り返し」の活用です。この連載では、簡単な題材で繰り返しを使うアルゴリズムの基本パターンを練習していきます。
演習問題の一覧や勉強スタイルについてのアドバイスはこちらからどうぞ。
Q017 1から指定の数まで、指定の倍数を縦に表示
複数行にわたり、1から指定の数の間にある倍数を順に表示してください。ただし、最終値となる数と対象の倍数(何の倍数を表示するか)はプログラムの先頭で変数に代入することで指定してください。
最終の値に「20」、対象倍数に「4」を指定した場合の実行例は次のとおりです。
また、今回作成するフローチャートやプログラムは、Q014をベースにしてください。つまり1から順に繰り返す中で表示対象の倍数だけをピックアップ(条件分岐)して表示する、ということを前提にアルゴリズムを組み立ててください。
ヒント
xの倍数は「xで割った余りが0である」という条件から判断することができます。この条件を使った条件分岐をQ014のループに組み込みましょう。
解答例と解説
考え方
まず最初に「何を繰り返す」かを考えます。今回の場合は
- 数を表示する(改行有り)
を繰り返すことになります。ただし、すべての数を無条件に表示するのではなく、指定の倍数かどうかを判断する必要がありますので、その辺りを付け加えると、
- 数が指定の倍数の場合、数を表示する(改行有り)
を繰り返すことことになります。
条件は指定値と繰り返しのカウンタ変数の値を使って設定しましょう。箇条書きでまとめると、
- 最後の数を指定する(変数に代入する)
- 表示対象の倍数を指定する(変数に代入する)
- 次の動作を1から指定の数まで繰り返す
- カウンタ変数の値が指定の倍数となっているか判断する
- 指定の倍数の場合
- カウンタ変数の値を表示する
- 改行する
- 指定の倍数の場合
- カウンタ変数の値が指定の倍数となっているか判断する
という流れになります。
具体的に倍数かどうかを判断するには、その数を指定の倍数で割った余りが0かどうかを調べます。割り切れた(余りが0)なら倍数ですし、割り切れなかった(余りが0以外)なら倍数では有りません。「割った余りを求める」ということで、剰余演算の出番となります。
フローチャート例
Javaでの実装例
public class Q017 { public static void main(String[] args) { int n = 20; // 表示の最大値 int bai = 4; // 倍数の指定 for (int i = 1; i <= n; i++) { if (i % bai == 0) { // 指定の倍数で割り切れるか System.out.println(i); } } } }
上のフローチャートとの対応からプログラム実装例の流れを確認しましょう。繰り返し文の中でif文を使うパターンとなります。
おわりに
条件分岐を繰り返していく、Q006であったパターンの応用でした。
今回はカウンタ変数を表示に使う、という点でQ014からの流れでの紹介となりました。
繰り返し文は、条件分岐との組み合わせで多種多様なアルゴリズムを実現できます。このパターンはしっかりと応用できるようにしましょう。
次回はこちらです。
[PR]