Resposta: x = 11
A solução é única no conjunto {0, 1, ... , 11}
(claro que 11 + 12k, k inteiro > 1, são também soluções!)
Verificação:
7x ≡ 5 (mod 12) → (7x - 5) / 12 é inteiro
(7*11 - 5) / 12 = (77 - 5) / 12 = 72 / 12 = 6 (inteiro)
Mas você perguntou COMO resolver.
Segue então um ALGORITMO (em 2 etapas):
1) Algoritmo Euclidiano Extendido
// Computa g = MDC(a, b) de 2 inteiros "a" e "b"
// e determina u and v tais que
// g = MDC (a, b) = a*u + b*v.
(u, v, g) = eMDC(a, b)
{
a = |a|; b = |b|;
u = 1; v = 0; g = a;
u1 = 0; v1 = 1; g1 = b;
while (g1 != 0)
{
q = g \ g1; // Divisão inteira
t1 = u - q*u1; t2 = v - q*v1; t3 = g - q*g1;
u = u1; v = v1; g = g1;
u1 = t1; v1 = t2; g1 = t3;
}
}
2) Algoritmo para Solução de Congruência Linear
// Resolve a equação de Congruência Linear
// ax ≡ b (mod n) para x
x = ResolveECL(a, b, n)
{
n = |n|;
a = a mod n;
b = b mod n;
(u, v, g) = eMDC(a, n); //Usa o Algoritmo Euclidiano Extendido
if (b mod g != 0) {
write("Não há solução");
x = 0; // retorna ZERO
} else {
x0 = (u * (b / g)) mod n;
m = x0; // m = solução minima
for (i = 0; i < g; i++) // há g soluções
{
x = (x0 + i * (n / g)) mod n;
if (x < m) m = x;
write("Solução " + (i+1) + ": " + x);
}
x = m; // retorna solução minima
}
}
Segue implementação em VB:
' Computa g = MDC(a, b) de 2 inteiros "a" e "b"
' e determina u and v tais que
' g = MDC (a, b) = a*u + b*v.
'
Public Function eMDC&(a&, b&, u&, v&)
Dim g&, u1&, v1&, g1&, t1&, t2&, t3&, q&
a = Abs(a): b = Abs(b)
u = 1: v = 0: g = a
u1 = 0: v1 = 1: g1 = b
Do While (g1 <> 0&)
q = g \ g1
t1 = u - q * u1: t2 = v - q * v1: t3 = g - q * g1
u = u1: v = v1: g = g1
u1 = t1: v1 = t2: g1 = t3
Loop
eMDC = g
End Function
' Resolve a equação de Congruência Linear
' ax == b (mod n) para x
' Retorna o n° de soluções s
' Demais soluções:
' Xi = Xo + i * ng, i=1,2,..., s-1
'
Public Function ResolveECL&(aa&, bb&, n&, x0&, ng&)
Dim a&, b&, u&, v&, g&, m&, x&, i&, k&
n = Abs(n): a = aa Mod n: b = bb Mod n
g = eMDC(a, n, u, v) 'Usa o Algoritmo Euclidiano Extendido
If (b Mod g) <> 0 Then
g = 0
Else
x0 = (u * (b / g)) Mod n
ng = n \ g
'Encontrar a menor solução não-negativa
Do While (x0 < 0)
x0 = x0 + ng
Loop
End If
ResolveECL = g
End Function
2006-11-05 23:35:38
·
answer #1
·
answered by Alberto 7
·
0⤊
0⤋
Voavam juntos, andorinhas (a) e bem-ti-vis (b), ao todo tinha 70 pássaros no bando. se havia 32 andorinhas a mais que bem-ti-vis. -qual o número de andorinhas? -qual o número de bem-ti-vis {a+b=70 {a -b=32 ----------- 2a=102 a=102/2 a=fifty one Andorinhas >>>> a+b=70 b=70-a = 70- fifty one = 19 bem-ti-vis >>>>>
2016-12-28 13:53:34
·
answer #2
·
answered by Anonymous
·
0⤊
0⤋
7x = 5 (mod.12), temos 7x = 12.a + 5 è 7x – 12.a = 5
podemo ter como resposta possivel x=6 e a=1
ate onde conheço
não estou muito bem em algebra moderna mas deve ser isso
2006-11-05 12:24:29
·
answer #4
·
answered by cmdesenho 2
·
0⤊
2⤋
Olha, isso é matemática bem avançada....
Esse não seria um dos problemas de Hilbert, ainda sem solução, seria?
2006-11-05 11:54:53
·
answer #5
·
answered by Dario 5
·
0⤊
2⤋