質問の一次不定方程式の一組の整数解をPythonで求めてみた。

 質問の一次不定方程式の一組の整数解をPythonで求めてみました。(^_^;
 一次不定方程式には整数解がいくつもあるので、二乗の和が一番小さいものを求めることにしました。
 ちなみに、この一次不定方程式には名前があって、ベズーの等式というそうです。

● Bezout1.py

# coding: UTF-8
# Bezout1.py

ans = []                # 最小の組が複数ある場合の対策
min = float("inf")      # 最小値の初期値を∞にしてみた
r = range(-100,100)
for x in r:
  for y in r:
    if 24*x+19*y==1:
      if x*x+y*y< min:  # 二乗の和が一番小さいものを求める
        if len(ans)!=0: ans.pop()      
        ans.append([x,y])
        min = x*x+y*y
      elif x*x+y*y==min:
        ans.append([x,y])
print(ans)

●実行結果

[[4, -5]]

 ちなみに、数学的には次のようにして求めます。
> 24x+19y=1
> これを計算すると
> 24=19×1+5
(19\times1+5)x+19y=1
5x+19(y+x)=1
 y_1=y+xとおくと、y=y_1-x \cdots(1)で、
 5x+19y_1=1
> 19=5×3+4
5x+(5\times 3+4)y_1=1
5(x+3y_1)+4y_1=1
 x_1=x+3y_1とおくと、x=x_1-3y_1 \cdots(2)で、
 5x_1+4y_1=1
> 5=4×1+1
(4\times 1+1)x_1+4y_1=1
x_1+4(y_1+x_1)=1
 y_2=y_1+x_1とおくと、y_1=y_2-x_1 \cdots(3)で、
 x_1+4y_2=1
> 式変形していきます。
 どっちかの係数が1になれば、それを1、他方を0とすれば整数解の一つが求まるので、
 x_1=1,y_2=0
 これらと(3)から、y_1=0-1=-1
 これらと(2)から、x=1-3\times (-1)=4
 これらと(1)から、y=(-1)-4=-5

 質問のユークリッドの互除法を使った計算では、これを数字だけで機械的に計算しているのだと思われますが、分かりやすくするために、次のようにするのはどうでしょうか。(^_^;
 残す数字を[]括弧で、互除法の余りの数字を{}括弧でくくっておいて、この余りの部分を下から順に代入して消去していきます。ここで、括弧は四角や丸で囲んでもいいのですが、書きにくいので括弧でくくることにしました。(^_^;
 ちなみに、下から代入していくのは、代入した後、式を整理すると、代入を1回で済ませることが出来るからです。それから、式変形の方針としては、[]括弧で括った数字は最後まで残し、{}括弧で括った数字は'文字'(式)のように代入法で消去していきますが、代入して消去する場合以外は残す(壊さない)ということにも注意しましょう。

 24=19×1+5 ∴ {5}=[24]-[19]×1
 19=5×3+4  ∴ {4}=[19]-{5}×3
 5=4×1+1   ∴ [1]={5}-{4}×1
∴以上より、
[1]={5}-{4}×1           ← これに{4}=[19]-{5}×3を代入
   ={5}-([19]-3{5})×1   ← これを整理すると
   =4{5}-[19]            ← これに{5}=[24]-[19]×1を代入
   =4([24]-[19]×1)-[19] ← これを整理すると
   =4[24]-5[19]
   =24(4)+19(-5)

 数字を文字的に扱うとこがユニークですが、分かりにくければ、実際に文字で置いてみるのもいいかも知れません。
 M=24,N=19,p=5,q=4と置くと、

 24=19×1+5 ∴ {5}=[24]-[19]×1 ∴ p=M-N×1
 19=5×3+4  ∴ {4}=[19]-{5}×3  ∴ q=N-p×3
 5=4×1+1   ∴ [1]={5}-{4}×1   ∴ 1=p-q×1
∴以上より、
 1 =p-q×1               ← これにq=N-p×3を代入
   =p-(N-p×3)           ← これを整理すると
   =4p-N                 ← これにp=M-N×1を代入
   =4(M-N×1)-N          ← これを整理すると
   =4M-5N
   =M(4)+N(-5)
   =24(4)+19(-5)

P.S.
 ちょっと、Youtubeの動画を検索してみたら、いいの(裏ワザ)が見つかったので参考URL(上から5番目)にはっておきました。o(^-^)o
 この問題に動画の方法を使えば、次のようになります。

  R   Q   C
-------------
 24   X   5  --> 95 (-)
 19   1   4  --> 96
  5   3   1
  4   1   1
  1  -->  0

※参考URL
5. データ構造 ─ Python 2.7ja1 documentation
Pythonでは無限大と数値の比較ができる - anon21's Blog
ディオファントス方程式
ユークリッドの互除法の証明と不定方程式 | 高校数学の美しい物語
ユークリッドの互除法(その②)(一次不定方程式と裏ワザ)

ディオファントス方程式の質問を十進BASICで解いてみた。
知恵袋の1次不定方程式の整数解の問題をJavaで解いてみた。
センター試験の一次不定方程式の問題をPythonで解いてみた。 - rscのブログ