Hola, soy nuevo en el foro y quiero enviarles un saludo a todos ustedes.
//Declaración de variable
int liN, liContador1, liContador2, liContador3, liContadora = 0;
//Entrada de datos
printf("Ingrese un valor: ");
scanf("%d", &liN);
//Procesamiento
printf("\n");
for (liContador1 = 1; liContador1 <= liN; liContador1++)
{
for (liContador2 = 1; liContador2 <= liN; liContador2++)
{
for (liContador3 = 1; liContador3 <= liN; liContador3++)
{
if (liContador1 * liContador1 + liContador2 * liContador2 == liContador3 * liContador3)
printf("(%d, %d, %d)\t", liContador1, liContador2, liContador3);
}
}
}
printf("\n");
(http://oi60.tinypic.com/sv313d.jpg)
Tengo este código hecho y me muestra muchos resultados, algunos que no aparecen, por ejemplo en wikipedia y algunos sitios web que enseñan este método.
Tengo algo mal o me falta hacer algo?.
Espero que me ayuden y saludos a todos!.
como no especificas... supongo que lo dices por las ternas
(6,8,10), (8,6,10), etc
pero si 6,8,10 es una terna por que no aparece? simple... 6,8,10 es lo mismo que 3,4,5 y solo toman las formas simplificadas ya que por la teoria... lee la parte de ternas primitivas y no primitivas...
Hola, y qué debo de hacer para que salgan las correctas?.
las que tienes son correctas... supongo que lo que quieres dcir, es que tienes que hacer solo para que salgan solo las ternas primitivas... mira lo que dice la teoría sobre la primitiva y aplica lo que la hace primitiva...
por otro lado para quitar las ternas repetidas como (4,3,5) que claramente es (3,4,5) no permitas que "b" sea nunca menor que "a"
Hola, intento hacerlo y no me sale :(
Que intentas hacer y no te sale?
Muestra el código a ver que error tienes
for (liContador1 = 1; liContador1 <= liN; liContador1++)
{
for (liContador2 = liContador1 ; liContador2 <= liN; liContador2++)
{
for (liContador3 = 1; liContador3 <= liN; liContador3++)
{
TernasPitagoras(liContador1, liContador2, liContador3);
}
}
}
Hize un cambio (marcado en negrita) y todavia me sale algunos repetidos.
no veo repeticiones, con el cambio de codigo ya no te quedan inversiones
nada de (3,4,5) (4,3,5)
por cierto... liContador3 tambien debería ser inicialmente = liContador1, ya que nunca la suma de los cuadrados nunca será menor que ninguno de los valores
ahora solo te falta imprimir solo las primitivas y terminaste... y por lo que veo no estás intentando lo que ya te he dicho
Citarmira lo que dice la teoría sobre la primitiva y aplica lo que la hace primitiva...
la teoria está en wikipedia