Código
/*(Triples de Pitágoras) Un triángulo recto puede tener lados cuyas longitudes sean valores enteros. Un conjunto de tres valores enteros para los lados de un triángulo recto se conoce como triple de Pitágoras. Estos tres lados deben satisfacer la relación que establece que la suma de los cuadrados de dos lados es igual al cuadrado de la hipotenusa. Encuentre todos los triples de Pitágoras para lado1, lado2, y la hipotenusa, que no sean mayores de 500. Use un ciclo for triplemente anidado para probar todas las posibilidades. Este método es un ejemplo de la computación de fuerza bruta. En cursos de ciencias computacionales más avanzados aprenderá que existen muchos problemas interesantes para los cuales no hay otra metodología algorítmica conocida, más que el uso de la fuerza bruta. */ #include <iostream> #include <cmath> #include <iomanip> using namespace std; int main( int argc, char* args[] ) { int lado1 = 1, lado2 = 1, hipotenusa = 1; double res_pow_lado2, res_pow_hipotenusa; cout << "Lado1 al cuadrado ------ Lado2 al cuadrado ------ Hipotenusa al cuadrado" << endl << endl; for( ;; hipotenusa++ ) { res_pow_hipotenusa = pow( hipotenusa, 2 ); for( ;; lado2++ ) { res_pow_lado2 = pow( lado2, 2 ); for( ;; lado1++ ) { if( pow( lado1, 2 ) + res_pow_lado2 == res_pow_hipotenusa ) { cout << lado1 << " = " << pow( lado1, 2 ) << setw(20) << lado2 << " = " << res_pow_lado2 << setw(20) << hipotenusa << " = " << res_pow_hipotenusa << endl; } if( pow( lado1, 2 ) + res_pow_lado2 > 500 ) break; } lado1 = 1; if( lado1 + res_pow_lado2 > 500 ) break; } lado2 = 1; if( res_pow_hipotenusa > 500 ) break; } cin.get(); return 0; }
Gracias.
EDIT: Me gustaria saber si existe una manera de comprobar que ese es el resultado correcto :S, es decir, si no existen mas combinaciones.
EDIT2: Me di cuenta que las variables res_pow... deben ser double.