ユークリッドの互除法


整数全体の集合を Z と書きます。

Z には2つの演算、加法 a + b、乗法 ab があり、

が成り立っているので、Z になります。

Z は乗法の単位元 1 をもつので、 単位元をもつ環であり、 1 = 0 ではないので、零環ではなく、 乗法について可換であるので、可換環 であり、 0 以外の零因子 をもたないので、整域となります。

自然数全体の集合(0 を含む)を N と書きます。 N の元 x、y (y は 0 ではない)に対して x = qy + r、r < y となる N の元 q、r が存在します。

Z - { 0 } から N への写像 N を、 N(x) は x の絶対値として定義すると、 Z の元 x、y (y は 0 ではない)に対して x = qy + r、r = 0 または N(r) < N(y) となる Z の元 q、r が存在するので、Zユークリッド整域となります。

よって Z の元 x、y に対して、
g(x, y)=x (y = 0 のとき) (1)
g(y, r) (y = 0 でないとき、r は x = qy + r を満たす元)(2)
と定義することができます。

Z の元 x、y に対して、q、r を x = qy + r となる Z の元とすると、 x は y、r で生成される Zイデアル (y, r) に含まれます。 また、r は (x, y) に含まれるので、(x, y) = (y, r) となります。 よって、g(x, y) の定義の (1) のとき (x, y) = (x) = (g(x, y))、 (2) のとき (x, y) = (y, r) となるので、 (x, y) = (g(x, y)) となります。 よって、x、y は (g(x, y)) に含まれるので、g(x, y) の倍数になります。 また、g(x, y) = ax + by となる Z の元 a、b が存在するので、 x = de、y = df ならば g(x, y) = (ae + bf)d となって、 g(x, y) は x と y のすべての公約数の倍数になっているので、 g(x, y) は x と y の最大公約数 (最大公約元) となります。


N(x) = x2 としても、上に述べたのと同様に、2つの整数の 最大公約数を求めることができます。 いちばん上にある入力域に「45=x;234=y」のような形式で入力して、 [input] ボタンを押してください。
45 = x (N = 2025)
234 = y (N = 54756)
と表示されます。 右側のかっこの中は、N(x)の値を表しています。 [next] ボタンを何回か押していくと、
9 = -5 * x + y (N = 81)
0 = -5 * y + 26 * x (N = 0)
のように左辺が 0 となります。 このとき、9 が最大公約数となります。 右辺は、
9 = -5 * 45 + 234
となることを表しています。



x, y の初期値、次の値(x1, y1)を求める式、 繰り返しの条件を入力して、[OK]を押した後、[run]を押してください。
x = y =
x1 = y1 = (+, -, *, /, % が使えます)
while (==, !=, <, <=, >, >= が使えます)
repeat times