Como encontrar pares de inteiros (não-negativos e maiores do que zero), tais que a^2 + b^2 = 2020^2?
Este tópico trouxe várias respostas criativas.
Resposta: são 4 pares (a,b) tais que a^2+b^2 = 2020^2:
400 e 1980
868 e 1824
1212 e 1616
1344 e 1508
Seguem 4 resoluções, partindo da mais fácil para a mais elegante.
- O Arthur Bratti (de Santa Catarina) fez um tabelão, com as linhas e colunas variando de 1 a 2020, fez as contas para todas as alternativas, e ficou somente com as que davam 2020^2 = 4.080.400. Infelizmente, o excel ficou grande demais para enviar por e-mail. Como usa somente fórmulas de Excel, a lógica é bem simples.
O print abaixo é uma ilustração do método.
- Em VBA dá para fazer um loop for dentro de outro. Se for igual a 2020^2, guardo a solução, senão, vou para a próxima.
For i = 1 To 2019
For j = i + 1 To 2019
If i ^ 2 + j ^ 2 = 2020 ^ 2 Then
c = c + 1
sol(c, 1) = i
sol(c, 2) = j
End If
Next
Next
- Python é a linguagem padrão em análise de dados (vide comentário aqui:
O mesmo código, em Python:
sol =[]
for a in range(2020):
for b in range(a+1,2020):
if a**2 + b**2 == 2020**2:
sol.append([a,b])
print(sol)
Note como Python é conciso e direto ao ponto.
- A solução mais elegante de todas for enviada pelo grande Marcos Melo. Utiliza matemática, ao invés de computação. Transcrevo aqui suas palavras.
A fórmula que engloba todos os números Pitagóricos é:
A= k*(X^2-Y^2)
B=k*(2*X*Y)
C= k*(X^2+Y^2)
Onde X e Y são primos entre si.
Como 2020 é 1*2*2*5*101
A chave é encontrar os resultados de hipotenusa X^2+Y^2=5: =101 e =505;
A hipotenusa 5 é do bem conhecido triângulo 3, 4 e 5 resultado do par X=2 e Y=1; multiplicado por 404 será de hipotenusa 2020.
(ou seja, resultado 1212 e 1616).
A hipotenusa 101 é do 20, 99 e 101 resultado do par X=10 e Y=1; multiplicado por 20 será de hipotenusa 2020.
(ou seja, o par 400 e 1980).
A hipotenusa 505 tem dois: o formado por X=21 e Y=8 e o X=19 e Y=12, que resultam nos triângulos 336, 377 e 505; e 217, 456.e 505; ambos multiplicados por 4 serão de hipotenusa 2020;
(ou seja, os dois pares faltantes: 868 e 1824; 1344 e 1508).
Você precisa fazer login para comentar.