問題プレビューID: d44116b9

問 6

関数 f(x,y)f(x, y) が次のように定義されているとき,f(775,527)f(775, 527) の値は幾らか。ここで,x mod yx \bmod y は xx を yy で割った余りを返す。

f(x,y): if y=0 then return x else return f(y,x mod y)f(x, y): \text{ if } y = 0 \text{ then return } x \text{ else return } f(y, x \bmod y)

解説

この関数はユークリッドの互除法により xx と yy の最大公約数を求める。

  • f(775,527)f(775, 527): 775 mod 527=248775 \bmod 527 = 248 → f(527,248)f(527, 248)
  • f(527,248)f(527, 248): 527 mod 248=31527 \bmod 248 = 31 → f(248,31)f(248, 31)
  • f(248,31)f(248, 31): 248 mod 31=0248 \bmod 31 = 0 → f(31,0)f(31, 0)
  • f(31,0)f(31, 0): y=0y = 0 なので 3131 を返す。

したがって値は 31 であり「イ」が正解である。