【基本情報】コード掲載!科目B問4「最大公約数を求めるプログラム」について解説します

20231105_sample_b_q4 資格試験

基本情報の午後試験はプログラム問題です.

科目B問題を解けるようになるにはプログラムを元に自分でコードを書いてみるのが1番良いでしょう.

今回は科目B問4「最大公約数を求めるプログラム」の解説とそのコードを紹介します.
プログラムを元にPythonで書き直しました.

Pythonで書いてみたので是非手元で実行してみてください

サンプル問題 科目B 問4「最大公約数を求めるプログラム」

問題文は以下のとおりです.
最大公約数を求める問題ですね.

問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を選んでしまいがちですが,処理内容を見て選択肢を選びましょう.

最大公約数の求め方など忘れていたので,この問題を解いて初めてプログラムで最大公約数を求める方法を知りました.

考え方は実務でも活かせる点があるかもしれません.
是非覚えておきましょう!