🐺
拡張ユークリッドの互除法を実装してみる
アドベントカレンダー(自称)vol.17
皆さん、こんにちは。yumyum116 です。SWE転職を目指す者です。
アドベントカレンダーに便乗して、1日1記事投稿に挑戦するとともに、執筆活動の習慣化にも挑戦してみます。
今回は、拡張ユークリッドの互除法 について取り上げます。
1. 拡張ユークリッドの互除法とは
2つの整数
が成り立ち、式①を満たす整数解
2. 拡張ユークリッドの互除法のアルゴリズム
本題に入る前に、ユークリッドの互除法における処理についておさらいしましょう。
ユークリッドの互除法では、2つの整数
ここで、一行目の式に注目します。
となり、
この結果を、二行目に代入してみましょう。
となり、
この操作を繰り返していくと、
したがって、最終的に
と表すことができます。式②より、
となり、式①と同じかたちで表すことができました。
式①と③を比較すると、
と表せ、この
3. 拡張ユークリッドの互除法を実装してみる
前章の内容を踏まえ、拡張ユークリッドの互除法を実装してみます。
extended_eucledean.py
def extended_eucledean(a, b):
if b == 0:
return (1, 0)
else:
xd, yd = extended_euclid(b, a % b)
return (yd, xd - a // b * yd)
非常にシンプルですね。
記事内に誤謬等ある場合には、修正いたします。その際は、ご連絡いただけますと幸いです。
それでは。また。
Discussion