アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20110702 実施分 問6
整数x,y(x>y≧0)に対して,次のように定義された関数F(x,y)がある。F(231,15)の値は幾らか。ここで,x mod y は x を y で割った余りである。
F(x,y) = x (y=0のとき)
F(x,y) = F(y, x mod y) (y>0のとき)
- ア 2
- イ 3
- ウ 5
- エ 7
出典:基本情報技術者試験 科目A免除 修了試験 20110702 実施分 問6
答えと解説を見る
正解:イ
覚える知識
ユークリッドの互除法のトレースと初期値関係
互除法は、x mod yを繰り返し余りが0になったときの除数が最大公約数となる。
この問題で必要なこと
F(x,y)=F(y,x mod y)は互除法で最大公約数を求める。F(231,15)→F(15,6)→F(6,3)→F(3,0)=3。
ひっかけ
最終の0やその一つ前の余りを答えにしてしまう計算ミス。
この知識の出題:本試験系 6 回・免除試験 19 回(公開問題での観測値)