
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
ユークリッドの互除法と行列計算を用いて、gcd(108, 57)と、108x+57y=gcd(108,57)を満たす整数x、yを求める拡張ユークリッド互除法に関する空欄補充問題。
ユークリッドの互除法でgcd(108,57)を求め、互除法の各ステップを表す行列の積Aから、ax+by=gcd(a,b)を満たす整数x、yを求める空欄補充問題。
① 互除法で最後に割り切った数(余り0の直前の割る数)が最大公約数。x・y は行列の積をそのまま計算して読む
② gcd=3 で④⑤。[[0,1],[1,−1]]² = [[1,−1],[−1,2]]、これに左から[[0,1],[1,−8]]を掛けると2行目 = [1+8, −1−16] = [9, −17]。検算 108×9+57×(−17)=972−969=3
③ 3・9・−17(④)
互除法の各式より、108=57×1+51、57=51×1+6、51=6×8+3、6=3×2+0であり、余りが0になる直前の値が最大公約数なのでgcd(108,57)=3(ア)。次にA=[[0,1],[1,−8]]·[[0,1],[1,−1]]·[[0,1],[1,−1]]を計算する。後ろの2つの積は[[0,1],[1,−1]]·[[0,1],[1,−1]]=[[1,−1],[−1,2]]。これに左から[[0,1],[1,−8]]を掛けると、1行目は[−1,2]、2行目は[1×1+(−8)(−1), 1×(−1)+(−8)×2]=[9,−17]となる。よってx=9(イ)、y=−17(ウ)。実際、108×9+57×(−17)=972−969=3=gcd(108,57)を満たす。したがってア=3、イ=9、ウ=−17の④が正しい。
拡張ユークリッド互除法では、互除法の各ステップを2×2行列で表し、その積を求めることでax+by=gcd(a,b)を満たすx、yが得られる。行列の積はゆっくり確実に計算し、最後に元の式へ代入して検算するとよい。
キーワード: ユークリッドの互除法、最大公約数、拡張ユークリッド互除法、行列、情報・論理