次のプログラム中の 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

減算による互除法は等しくなるまで大きい方から引く

頻出基本情報技術者試験2022年度 公開問題 科目B4/アルゴリズムとプログラミング / アルゴリズム

○整数型: gcd(整数型: num1, 整数型: num2) 整数型: x ← num1 整数型: y ← num2 a if ( b ) x ← x - y else y ← y - x endif c return x

選択肢

正解と解説

正解: a: while (x ≠ y), b: x > y, c: endwhile

利用する性質(2)(3)は、大きいほうから小さいほうを引く操作を、両者が等しくなるまで繰り返すことを示しています。したがってaは繰返し構造 while (x ≠ y)、cはその終わりのendwhileです。bの条件は、真のときにx←x-yを実行するので「xのほうが大きい」場合、すなわち x > y でなければなりません。

選択肢ごとの解説

出典:令和4年度 公開問題 基本情報技術者試験 科目B 問4(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。