中学数学で倍数判定というものを習います。
こんな問題(↓)です。
【問題】次の数字の中で3の倍数をすべて選びなさい。
このように、ある数の倍数かどうかを判定することはプログラミングの中でもよく出てきます。
プログラミングの中で倍数判定を行うのは次のようなケースが考えられます
ゲームのプログラミングで、よく出てきます。
ここに倍数判定が出てきます。
プログラミングでは、次のように考えます。
「3つクリアするごと」⇒「クリアした画面の数が3の倍数だったら」。
わかりやすく、画面をステージとして考えてみます。
上の例だと「画面を3つクリアするごと」はクリアした画面の数が3と6のときになります。
3の倍数ですよね。
プログラミングでは次のように書きます。
もし クリアした画面の数 = 3の倍数 なら、
(ボーナスポイントを与える)
そうではなれば、
(ボーナスポイントを与えない)
いわゆるIF文というものです。
プログラミングでは、ある数の倍数になっているかの判定をどのように行うのでしょうか。
【ある数「A」が、別のある数「B」の倍数になってるかどうかの判定方法】
A÷B の あまりが「0」 なら AはBの倍数
(例)123が3の倍数かどうか判定するには、123を3で割って、あまりが「0」なら、123は3の倍数です。倍数なら割り切れるから、あまりは「0」というわけです。
これがプログラミングの考え方です。
ある数を「3」で割ったときのあまりは3通りです。
この3通りは順番に現れます。
ある数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | … |
---|---|---|---|---|---|---|---|---|
3で割ったあまり | 1 | 2 | 0 | 1 | 2 | 0 | 1 | … |
この規則性に注目することで、次のようなプログラムを組むことができます。
クリアした画面の数÷3のあまりを求め、これをAとする。
もし A=0 なら、
(ボーナスポイントを与える)
もし A=1 なら、
(別の処理「パターンB」をする)
もし A=2 なら、
(別の処理「パターンC」をする)
これにより、画面をクリアするごとに何らかの処理が可能になります。
中学数学で習う倍数判定方法は、「割ってあまりが0」ではありません。
何の倍数かを判定するかにより異なります。
プログラミングでは、この知識が無駄かというと、そうではありません。
数字を割って求めるのではなく、こちらで判定する場合も出てくるからです。
どんなケースかはプログラミングを勉強し始めるとわかります。
気になった人は、プログラミングの勉強を始めてみてください。