El último teorema de Fermat dice que no existen soluciones integrales positivas a la ecuación a^n + b^n = c^n
para ninguna n>2
. Andrew Wiles demostró que esto era cierto en 1994.
Sin embargo, hay muchos "casi errores" que casi satisfacen la ecuación diofantina, pero la pierden por uno. Precisamente, son todos mayores que 1 y son soluciones integrales de a^3 + b^3 = c^3 + 1
(la secuencia es el valor de cada lado de la ecuación, en orden creciente).
Su tarea está dada n
, imprimir los primeros n
valores de esta secuencia.
Aquí están los primeros valores de la secuencia:
1729, 1092728, 3375001, 15438250, 121287376, 401947273, 3680797185, 6352182209, 7856862273, 12422690497, 73244501505, 145697644729, 179406144001, 648787169394, 938601300672, 985966166178, 1594232306569, 2898516861513, 9635042700640, 10119744747001, 31599452533376, 49108313528001, 50194406979073, 57507986235800, 58515008947768, 65753372717929, 71395901759126, 107741456072705, 194890060205353, 206173690790977, 251072400480057, 404682117722064, 498168062719418, 586607471154432, 588522607645609, 639746322022297, 729729243027001
Este es el código de golf , por lo que gana el código más corto en bytes .
Respuestas:
Jalea , 16 bytes
Solución de fuerza bruta. Pruébalo en línea!
fuente
Brachylog , 31 bytes
Pruébalo en línea!
Esta no es una fuerza bruta completa, ya que utiliza restricciones. Esto es un poco lento en TIO (aproximadamente 20 segundos para
N = 5
). Toma alrededor de 5 segundosN = 5
y 13 segundosN = 6
en mi máquina.Explicación
fuente
Perl, 78 bytes
Enfoque de fuerza bruta. Enrutando el shebang como dos, la entrada se toma de stdin.
Uso de muestra
Pruébalo en línea!
fuente
Mathematica, 95 bytes
Función sin nombre que toma un único argumento entero positivo
#
y devuelve una lista de los#
enteros deseados . Espaciado para la legibilidad humana:La línea 4 calcula todas las sumas posibles de cubos de enteros entre 2 y
b
+1 (con la inicializaciónb=9
en la línea 1) en orden ordenado. Las líneas 3-5 seleccionan de esas sumas solo aquellas que también son uno más que un cubo perfecto; la línea 6 limita esa lista a la mayoría de los#
valores, que se almacenan ena
. Pero si esta lista tiene de hecho menos que#
valores, elWhile
bucle en las líneas 1-7 se incrementab
e intenta nuevamente. Finalmente, la línea 8 salea
una vez que tiene la longitud correcta.¡Santo cielo, esta versión es lenta! Para un byte adicional, podemos cambiar
b++
en la línea 7b*=9
y hacer que el código realmente se ejecute en un tiempo razonable (de hecho, así es como lo probé).fuente
Raqueta 166 bytes
Sin golf:
Pruebas:
Salida:
fuente
Python 2 ,
10298 bytesPruébalo en línea!
fuente
Pari / GP, 107 bytes
Encuentra las primeras 10 soluciones en 10 segundos.
Objetivo: a ^ 3 + b ^ 3 = c ^ 3 + 1
Obtiene el número de soluciones requeridas por función-argumento n
Aumenta c de 3 y para cada c ^ 3 + 1 busca a y b con 1 <a <= b <c de modo que a ^ 3 + b ^ 3 = c ^ 3 + 1 . Si se encuentra, disminuya el número requerido de almas adicionales n en 1 y repita
Termina, cuando el número de soluciones adicionales requeridas (en n ) es igual a 0
Llámalo para obtener las primeras diez soluciones:
Código legible (requiere llaves iniciales y finales como indicadores para la notación de bloque de la función. También, por conveniencia, imprime todas las variables de una solución):
Pari / GP, 93 bytes
(Mejora por Dennis)
fuente
Python 2,
122119 Bytes¿Por qué sigues votando? Dennis aplastó esta respuesta;)
Bienvenido a la solución más larga a esta pregunta: / Me las arreglé para eliminar un byte completo creando condiciones más largas y eliminando la mayor sangría posible.
Salida para
n = 5
:fuente
TI-Basic, 90 bytes
Debe haber un camino más corto ...
fuente
MATLAB, 94 bytes
Otra solución de fuerza bruta:
Salida para
n=4
:Suprimir la
c=
parte de la pantalla aumenta el código a 100 bytesfuente
C #,
188174187136 bytesVersión de golf gracias a TheLethalCoder por su gran código de golf y consejos (¡ Pruébelo en línea! ):
Tiempo de ejecución para encontrar los primeros 10 números: 33,370842 segundos en mi computadora portátil i7 (la versión original a continuación fue de 9,618127 segundos para la misma tarea).
Versión sin golf:
Versión anterior de 187 bytes de golf incluida
using System;
Versión anterior de 174 bytes con golf (gracias a Peter Taylor):
Versión anterior (original) de 188 bytes de golf (¡ Prueba en línea! ):
Tiempo de ejecución para encontrar los primeros 10 números: 9.618127 segundos en mi computadora portátil i7.
Este es mi primer intento en la codificación de C # ... Un poco detallado en comparación con otros lenguajes ...
fuente
for
bucle. 2.int.Parse
es más corto queConvert.ToInt32
. 3.long
es más cortodouble
y más preciso para esta tarea. 4.t
es innecesario: puede realizar una cuentan
regresiva en su0
lugar. 5. Técnicamente, creo que necesita romper dos bucles después de imprimir, en caso de que haya una triple coincidencia.static void Main(){for(long a,b,c=3,n=int.Parse(Console.ReadLine());n>0;c++)for(a=2;a<c;a++)for(b=a;b<c;b++)if(a*a*a+b*b*b==c*c*c+1)Console.WriteLine(c*c*(a=c)+n/n--);}
Action
que guardará los bytes utilizados en la firma del método, es decir()=>{/*code here*/};
using System;
al recuento de bytesLenguaje GameMaker, 119 bytes
¿Por qué es
show_message()
tan largo :(x, y, z = 2,3,4 n = input () mientras n: si y 3 + x 3-z3 == 1 y x3 + 1; n- = 1 x + = 1 si y
fuente
Axioma, 246 bytes
ungof y resultado
fuente