最大公約数を求める処理【基本情報技術者試験 科目B サンプル問題】

(令和4年度12月公開) 基本情報技術者試験 サンプル問題 科目B 問4のブログのアイキャッチ画像 科目B 公開問題
広告

← 科目Bの公開問題一覧へ戻る

 基本情報技術者試験の科目Bのサンプル問題を題材に,最大公約数を求める処理について学習します。この問題では,変数の値を比較しながら,繰返し処理によって最大公約数を求める方法を確認します。

広告

(令和4年度12月公開) 基本情報技術者試験 サンプル問題 科目B 問4

 次のプログラム中の   a    c   に入れる正しい答えの組合せを,解答群の中から選べ。

 関数 gcd は,引数で与えられた二つの正の整数 num1 と num2 の最大公約数を,次の(1)~(3)の性質を利用して求める。

(1) num1 と num2が等しいとき,num1 と num2 の最大公約数は num1 である。

(2) num1 が num2 より大きいとき,num1 と num2 の最大公約数は,(num1 - num2) と num2 の最大公約数と等しい。

(3) num2 が num1 より大きいとき,num1 と num2 の最大公約数は,(num2 - num1) と num1 の最大公約数と等しい。

〔プログラム〕

○整数型: gcd(整数型: num1,整数型: num2)

 整数型: x ← num1

 整数型: y ← num2

   a  

  if (   b   )

   x ← x - y

  else

   y ← y-x

  endif

   c  

 return x

解答群

a

b

c

if (x ≠ y)x < yendif
if (x ≠ y)x > yendif
while (x ≠ y)x < yendwhile
while (x ≠ y)x > yendwhile

【解答】

【解説】

このプログラムは,ユークリッドの互除法を利用して,2つの整数の最大公約数を求める処理である。大きい方の数から小さい方の数を繰り返し引く方法で求めている。

最大公約数を求める処理は,(1)より,num1 と num2 が等しくなるまで繰り返すため,aは,while (x ≠ y) となる。

また,(2)より,x の値が y より大きい場合に x - y を計算するため,bは,x > y となる。

そして,while文による繰返し処理の終わりには endwhile を記述するため,cは,endwhile となる。

【参考】

「(令和4年度) 基本情報技術者試験 サンプル問題 科目B 問1」の解答画像04

この問題のポイント

 この問題から学べることは,

  • 最大公約数を求める方法
  • 変数の値を比較して処理を分岐する方法
  • while文を使って,条件を満たす間処理を繰り返す方法
  • 変数の値を追跡して,プログラムの処理結果を確認する方法

です。特に,2つの値が等しくなるまで,大きい方の値から小さい方の値を引く処理を繰り返して,最大公約数を求める方法を理解しておきましょう。

基本情報技術者試験の学習におすすめの参考書

基本情報技術者試験の合格を目指す方におすすめの参考書です。

令和08年 イメージ&クレバー方式でよくわかる かやのき先生の基本情報技術者教室
基礎理論からコンピュータ・ネットワーク・データベースまで、基本情報技術者試験の全範囲をわかりやすく学べる定番テキストです。図解が豊富で、初学者にもおすすめです。

キタミ式イラストIT塾 基本情報技術者 令和08年
イラストを使った解説が特徴の人気参考書です。基礎理論の考え方や計算問題もイメージで理解しやすく、独学学習との相性が良い一冊です。

令和08年 基本情報技術者 合格教本
試験範囲を体系的に学習したい方におすすめの教科書です。基礎理論の各テーマも丁寧に解説されており、理解を深めながら学習を進められます。

学習のお役に立ちましたら

この記事が少しでも学習のお役に立ちましたら,今後も分かりやすい解説や学習コンテンツを継続してお届けする励みになります。

よろしければ、このサイトを応援いただけますと嬉しいです。

※OFUSEは,クリエイターやコンテンツ制作を直接支援できるサービスです。

広告