Si MCD (a, b) = x * a + y * b, ¿cómo puedo encontrar x e y?

Dado que

[matemáticas] ax + por = \ gcd (a, b) [/ matemáticas]

Deje [math] \ gcd (a, b) = d [/ math]

[matemáticas] \ implica ax + by = d [/ matemáticas]

[matemática] \ implica \ left (\ dfrac {a} {d} \ right) x + \ left (\ dfrac {b} {d} \ right) y = 1 [/ math].

Como sabemos [matemática] a, b, d [/ matemática], calcule [matemática] \ left (\ dfrac {a} {d} \ right), \ left (\ dfrac {b} {d} \ right) [ /matemáticas]

let [matemáticas] a_1 = \ left (\ dfrac {a} {d} \ right), b_1 = \ left (\ dfrac {b} {d} \ right) [/ math]

[matemáticas] \ implica a_1x + b_1y = 1 [/ matemáticas].

[matemáticas] \ implica a_1 x \ equiv 1 \ mod b_1 [/ matemáticas]

[matemáticas] \ implica x = (a_1) ^ {- 1} \ mod b_1 [/ matemáticas]

Similar,

[matemáticas] y = (b_1) ^ {- 1} \ mod a_1 [/ matemáticas]
Tenga en cuenta que [math] a_1, b_1 [/ math] ahora son números primos porque dividimos [math] a, b [/ math] con [math] d (= \ gcd (a, b)) [/ math], entonces el inverso multiplicativo modular de [matemáticas] a_1 [/ matemáticas] wrt [matemáticas] b_1 [/ matemáticas] y el inverso multiplicativo modular de [matemáticas] b_1 [/ matemáticas] wrt [matemáticas] a_1 [/ matemáticas] existe.

Como estás codificando en Java, creo que esto es útil para resolver esta ecuación.

En breve

[matemáticas] x = (a / \ gcd (a, b)) ^ {- 1} \ mod (b / (\ gcd (a, b))) [/ matemáticas]

[matemáticas] y = (b / \ gcd (a, b)) ^ {- 1} \ mod (a / (\ gcd (a, b))) [/ matemáticas]

Nota: No es necesario el método de prueba y error, puede obtenerlo directamente usando la fórmula para [math] x, y [/ math] dada anteriormente.

Gracias por A2A 🙂