プログラミングに必要な中学数学知識(1)倍数判定による条件分岐
中学数学で倍数判定というものを習います。
こんな問題(↓)です。
【問題】次の数字の中で3の倍数をすべて選びなさい。
- (ア)111
- (イ)456
- (ウ)246
- (エ)980
このように、ある数の倍数かどうかを判定することはプログラミングの中でもよく出てきます。
プログラミングの中の倍数判定
プログラミングの中で倍数判定を行うのは次のようなケースが考えられます
- 画面を3つクリアするごとに、ボーナスポイントを与える
ゲームのプログラミングで、よく出てきます。
ここに倍数判定が出てきます。
プログラミングでは、次のように考えます。
「3つクリアするごと」⇒「クリアした画面の数が3の倍数だったら」。
わかりやすく、画面をステージとして考えてみます。
- 第1ステージクリア … クリアした画面の数=1
- 第2ステージクリア … クリアした画面の数=2
- 第3ステージクリア … クリアした画面の数=3
- 第4ステージクリア … クリアした画面の数=4
- 第5ステージクリア … クリアした画面の数=5
- 第6ステージクリア … クリアした画面の数=6
上の例だと「画面を3つクリアするごと」はクリアした画面の数が3と6のときになります。
3の倍数ですよね。
プログラミングでは次のように書きます。
もし クリアした画面の数 = 3の倍数 なら、
(ボーナスポイントを与える)
そうではなれば、
(ボーナスポイントを与えない)
いわゆるIF文というものです。
ある数の倍数になっているかの判定をプログラミングする方法
プログラミングでは、ある数の倍数になっているかの判定をどのように行うのでしょうか。
【ある数「A」が、別のある数「B」の倍数になってるかどうかの判定方法】
A÷B の あまりが「0」 なら AはBの倍数
(例)123が3の倍数かどうか判定するには、123を3で割って、あまりが「0」なら、123は3の倍数です。倍数なら割り切れるから、あまりは「0」というわけです。
これがプログラミングの考え方です。
あまりが「1」「2」なら…
ある数を「3」で割ったときのあまりは3通りです。
- 0(割り切れる)
- 1
- 2
この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」ではありません。
何の倍数かを判定するかにより異なります。
- 2の倍数判定…末尾が偶数
- 3の倍数判定…各ケタの数字の和が3の倍数
- 5の倍数判定…末尾が0か5
プログラミングでは、この知識が無駄かというと、そうではありません。
数字を割って求めるのではなく、こちらで判定する場合も出てくるからです。
どんなケースかはプログラミングを勉強し始めるとわかります。
気になった人は、プログラミングの勉強を始めてみてください。