Foros del Web » Programación para mayores de 30 ;) » Java »

Fórmula matemática

Estas en el tema de Fórmula matemática en el foro de Java en Foros del Web. Quiero encontrar dos números elevados al cubo que al sumarlos den otro al cubo. De la forma A*3 + B*3 = C*3. El código que ...
  #1 (permalink)  
Antiguo 04/02/2009, 06:46
 
Fecha de Ingreso: febrero-2009
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
Fórmula matemática

Quiero encontrar dos números elevados al cubo que al sumarlos den otro al cubo. De la forma A*3 + B*3 = C*3.

El código que he probado es este, pero los resultados son erróneos.

for (int c=1; c < 10000; c++) {
for (int a=1; a < 1000; a++){
for (int b=a; b < 1000; b++) {
if ((a*a*a + b*b*b) == (c*c*c)) {
print ("A =" + a);
println ();
print ("B =" + b);
println();
print ("C =" + c);
print (" " + "OTRO");
println ();
} }
}
}
  #2 (permalink)  
Antiguo 04/02/2009, 07:07
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Fórmula matemática

No encuentras solución, porque no hay solución.

Según el Último Teorema de Fermat, a^z + b^z = c^z, no tiene una solución entre los números naturales para ningún z > 2. Para el caso concreto de z = 3 (a^3 + b^3 = c^3) puedes leer alguna demostración por ahí:
http://www.mathpages.com/home/kmath009.htm
http://www.mathreference.com/num-zext,333.html
  #3 (permalink)  
Antiguo 04/02/2009, 07:29
MIRL27
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Fórmula matemática

De todos modos las soluciones erróneas son por overflow.

Así, una solución errónea que te salía era:
A = 139; B = 954; C = 2115

Si una variable de tipo primitivo int solo puede representar 4 bytes:
[ -2 147 483 648 , 2 147 483 647 ]

Está claro que C^3 queda fuera:
9 460 870 875 > 2 147 483 647

Pon un long y tendrás solucionado el problema, el algoritmo te funcionará perfectamente.

Un saludo!
  #4 (permalink)  
Antiguo 04/02/2009, 08:06
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Fórmula matemática

Vaya... No sé si ha quedado claro, pero arreglar el overflow no va a servir de nada y el algoritmo no va a servir de nada porque el problema no tiene solución.
  #5 (permalink)  
Antiguo 04/02/2009, 08:56
 
Fecha de Ingreso: febrero-2009
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Fórmula matemática

Muchas gracias a todos por aclararme la duda.
Saludos
  #6 (permalink)  
Antiguo 04/02/2009, 14:42
MIRL27
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Fórmula matemática

Cita:
Iniciado por venkman Ver Mensaje
Vaya... No sé si ha quedado claro, pero arreglar el overflow no va a servir de nada y el algoritmo no va a servir de nada porque el problema no tiene solución.
Una cosa no quita la otra y, personalmente, me parece tan interesante saber por qué da resultados erróneos como saber por qué no es posible encontrar solución alguna (quizá no se creía el teorema y quería comprobarlo por ensayo y error, vete tú a saber, las razones de cada uno...)

Un saludo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:29.