基本情報の午後試験はプログラム問題です.
科目B問題を解けるようになるにはプログラムを元に自分でコードを書いてみるのが1番良いでしょう.
今回は科目B問4「最大公約数を求めるプログラム」の解説とそのコードを紹介します.
プログラムを元にPythonで書き直しました.
Pythonで書いてみたので是非手元で実行してみてください
サンプル問題 科目B 問4「最大公約数を求めるプログラム」
問題文は以下のとおりです.
最大公約数を求める問題ですね.
サンプル問題[科目B]問4 最大公約数を求めるプログラム
プログラムをPythonで書き直す
問3に掲載されているプログラムを元にPythonで書き直しました.
def gcd(num1: int, num2: int):
x = num1
y = num2
# xとyが一致しないときに繰り返す
while (x != y): # a
# xがyよりも大きいとき
if (x > y): # b
x = x - y # xからyを引く
# yがxよりも大きいとき
else:
y = y - x # yからxを引く
# xとyが一致するときxを返す
return x
print(gcd(36, 60))
引数に36と60を渡しました.
プログラムを実行した結果は12です.
36と60の最大公約数を確認すると12だったのでプログラムに誤りはなさそうですね.
- a:while (x != y)
- b:x > y
- c:endwhile
a, b, cにはそれぞれこれら処理が入りました.
よって答えは「エ」になります.
ポイント 繰り返し処理
# xとyが一致しないときに繰り返す
while (x != y): # a
# xがyよりも大きいとき
if (x > y): # b
x = x - y # xからyを引く
# yがxよりも大きいとき
else:
y = y - x # yからxを引く
最大公約数を求めるにはif内の処理を何度が実行する必要があります.
そのため1回しか処理が実行できないif文では最大公約数を求められません.
whileを使う「ウ」または「エ」に絞れますね.
bには「x – y」が入りました.
if文が真のときに実行される処理内容をみるとxからyを引いています.
xからyを引くときはxの値がyよりも多いときです.
よって正解は「エ」です.
- a:while (x != y)
- b:x > y
- c:endwhile
まとめ
今回は科目B問4「最大公約数を求めるプログラム」について紹介しました.
if文のようがよく使うのでついついifを選んでしまいがちですが,処理内容を見て選択肢を選びましょう.
最大公約数の求め方など忘れていたので,この問題を解いて初めてプログラムで最大公約数を求める方法を知りました.
考え方は実務でも活かせる点があるかもしれません.
是非覚えておきましょう!