Hace poco me encontré con una pregunta de Stack Overflow (ya cerrada) en la que el OP estaba probando si un triángulo era recto por si "cumplía" o no los criterios del Teorema de Pitágoras (es decir, si el cuadrado de la hipotenusa es o no igual al cuadrado de los dos lados). El código era el siguiente:
public void Test(int a, int b, int c) {
if ((c * c) == ((a * a) + (b * b)) {
System.out.println("This is a right triangle");
}
else {
System.out.println("This is not a right triangle");
}
}
(Obviamente hay algunos otros problemas con este código, como el hecho de que no valida la entrada para asegurarse de que las entradas son positivas y el hecho de que sólo acepta números enteros).
La pregunta se refería a algo completamente diferente en el código y nunca abordó directamente la prueba, pero me puse a pensar: es ¿es ésta una prueba válida para saber si un triángulo es rectángulo?
Obviamente, el Teorema de Pitágoras establece que, para todos los triángulos rectos, $a^2 + b^2 = c^2$ (donde $a$ y $b$ son lados y $c$ es la hipotenusa). Esto se cumple para todos los triángulos rectos, por lo que ser un triángulo rectángulo es una condición suficiente para que se cumpla el Teorema de Pitágoras.
¿Es también una condición necesaria? Es decir, si $c^2 = a^2 + b^2$ para algún triángulo arbitrario, es el triángulo necesariamente ¿un triángulo rectángulo? ¿O hay contraejemplos?
1 votos
Por si sirve de algo, creo que el mayor problema del código es que puede desbordarse en muchos (¿la mayoría?) de los lenguajes.
1 votos
Supongo que preguntas por la geometría euclidiana...
0 votos
@user121330 Sí, etiqueto la geometría euclidiana.
0 votos
En este viejo post de matheducators.se se dan muchas preguntas geniales para un caso especial específico de este teorema (de algunas se puede deducir el caso general): matheducators.stackexchange.com/q/9847/5778