jueves, 2 de junio de 2011

Deitel_Java_5.21 (Triples Pitagóricas)

5.21 (Triples de Pitágoras) Un triángulo rectángulo puede tener lados cuyas longitudes sean valores enteros. El conjunto de tres valores enteros para las longitudes de los lados de un triángulo recto se conoce como triple de Pitágoras (o triples pitagóricas). Las longitudes de los tres lados deben satisfacer la relación que establece que la suma de los cudrados de los lados es igual al cuadrado de la hipotenusa. Escriba una aplicación para encontrar todos los triples de Pitágoras para lado1, lado2 y la hipotenusa, que no sean mayores a 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 los 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.
______________________________________________________________________________________________________________________
Solución:
La salida de este programa da casos repetidos, en los cuales los catetos intercambian su valor. A cambio de eso el programa es totalmente a base de fuerza bruta y bastante sencillo. En este ejercicio, debibo a la gran cantidad de lineas (774) que arroja el ejecutable, tal vez le convenga Redireccionar la salida
El siguiente código debe guardarse con el nombre UsaDeitel_5_21.java

public class UsaDeitel_5_21 

{           // Abre clase 
  
public static void main(String args[])
{        // Abre main
//Se crea un objeto de tipo Deitel_5_21 
Deitel_5_21 miObjeto = new Deitel_5_21();

// Se llama a metodo Pitagoras
miObjeto.Pitagoras();

}        // Cierra main 
}           // Cierra clase UsaDeitel 


El siguiente código debe guardarse con el nombre Deitel_5_21.java

public class Deitel_5_21

{       // Abre clase Deitel_5_21

public int Tamano = 500;
public void Pitagoras()
{  // Abre metodo Pitagoras
  
System.out.print("\nEste programa prueba e imprime todas las ternas");
System.out.printf(" pitagoricas para numeros no mayores que %d ", Tamano);
System.out.print(" mediante la fuerza bruta.\n");

for ( int i = 1; i <= Tamano; i++ )
for ( int j = 1; j <= Tamano; j++ )
for ( int k = 1; k <= Tamano; k++ )
{       // Abre for
if ( i*i == j*j + k*k )
System.out.printf("%3d\t%3d\t%3d\n", i, j, k);
}       // Cierra for

}  // Cierra metodo Pitagoras
}       // Cierra clase Deitel_5_21

9 comentarios:

  1. Un análisis muy interesante sobre las tripletas pitagóricas viene en la introducción del Ebook "Teoría de números" de Carlos Ivorra Castillo (lo puedes descargar desde su sitio). Creo que te resultará muy interesante revisarla y ver si se puede programar algo al respecto.

    Buena tarde :)

    ResponderEliminar
  2. Así es. Es un bonito ejemplo. Muchos saludos.

    ResponderEliminar
  3. Muy buenos ejemplos y ayudas...Muchas gracias por subirlos.

    ResponderEliminar
    Respuestas
    1. Qué bueno que te están sirviendo. ¡Gracias!

      Eliminar
  4. Faça um programa que imprima todas as triplas Pitagóricas 

    

      

     formadas
    por números entre  e 1000.

    ResponderEliminar
  5. Mi código me arroja 772 tripletas. ¿Cual puede ser la diferencia?
    import java.util.Scanner;

    public class Pitagoras {

    public static void main (String args[])
    {
    int i,j,k,contador=0;



    for (i = 1 ; i <= 500; i++)
    {

    for(j = 1 ; j <= 500; j++)
    {
    for(k = 1; k <= 500; k++)
    {
    if ( (Math.pow(k, 2)) + (Math.pow(j, 2)) == (int)(Math.pow(i,2)) )
    {
    System.out.printf("%d %d %d\n",i,j,k);
    contador++;
    }
    }
    }
    }
    System.out.println(contador);
    }
    }

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...