Suma de cuatro cubos

  1. Alpertron
  2. Programas
  3. Suma de cuatro cubos


Esta aplicación Web encuentra la descomposición de cualquier número entero no congruente a 4 ó 5 (mod 9) en una suma de cuatro cubos.

Fórmulas

El applet usa las siguientes fórmulas:

  • 6x = abrir paréntesis(x − 1cerrar paréntesis)³ + abrir paréntesis(−xcerrar paréntesis)³ + abrir paréntesis(−xcerrar paréntesis)³ + abrir paréntesis(x + 1cerrar paréntesis)³
  • 6x + 3 = x³ + abrir paréntesis(−x + 4cerrar paréntesis)³ + abrir paréntesis(2x − 5cerrar paréntesis)³ + abrir paréntesis(−2x + 4cerrar paréntesis)³
  • 18x + 1 = abrir paréntesis(2x + 14cerrar paréntesis)³ + abrir paréntesis(−2x − 23cerrar paréntesis)³ + abrir paréntesis(−3x − 26cerrar paréntesis)³ + abrir paréntesis(3x + 30cerrar paréntesis)³
  • 18x + 7 = abrir paréntesis(x + 2cerrar paréntesis)³ + abrir paréntesis(6x − 1cerrar paréntesis)³ + abrir paréntesis(8x − 2cerrar paréntesis)³ + abrir paréntesis(−9x + 2cerrar paréntesis)³
  • 18x + 8 = abrir paréntesis(x − 5cerrar paréntesis)³ + abrir paréntesis(−x + 14cerrar paréntesis)³ + abrir paréntesis(−3x + 29cerrar paréntesis)³ + abrir paréntesis(3x − 30cerrar paréntesis)³
  • 54x + 20 = abrir paréntesis(3x − 11cerrar paréntesis)³ + abrir paréntesis(−3x + 10cerrar paréntesis)³ + abrir paréntesis(x + 2cerrar paréntesis)³ + abrir paréntesis(−x + 7cerrar paréntesis)³
  • 72x + 56 = abrir paréntesis(−9x + 4cerrar paréntesis)³ + abrir paréntesis(x + 4cerrar paréntesis)³ + abrir paréntesis(6x − 2cerrar paréntesis)³ + abrir paréntesis(8x − 4cerrar paréntesis)³
  • 108x + 2 = abrir paréntesis(−x − 22cerrar paréntesis)³ + abrir paréntesis(x + 4cerrar paréntesis)³ + abrir paréntesis(−3x − 41cerrar paréntesis)³ + abrir paréntesis(3x + 43cerrar paréntesis)³
  • 216x + 92 = abrir paréntesis(3x − 164cerrar paréntesis)³ + abrir paréntesis(−3x + 160cerrar paréntesis)³ + abrir paréntesis(x − 35cerrar paréntesis)³ + abrir paréntesis(−x + 71cerrar paréntesis)³
  • 270x + 146 = abrir paréntesis(−60x + 91cerrar paréntesis)³ + abrir paréntesis(−3x + 13cerrar paréntesis)³ + abrir paréntesis(22x − 37cerrar paréntesis)³ + abrir paréntesis(59x − 89cerrar paréntesis)³
  • 270x + 200 = abrir paréntesis(3x + 259cerrar paréntesis)³ + abrir paréntesis(−3x − 254cerrar paréntesis)³ + abrir paréntesis(x + 62cerrar paréntesis)³ + abrir paréntesis(−x − 107cerrar paréntesis)³
  • 270x + 218 = abrir paréntesis(−3x − 56cerrar paréntesis)³ + abrir paréntesis(3x + 31cerrar paréntesis)³ + abrir paréntesis(−5x − 69cerrar paréntesis)³ + abrir paréntesis(5x + 78cerrar paréntesis)³
  • 432x + 380 = abrir paréntesis(−3x + 64cerrar paréntesis)³ + abrir paréntesis(3x − 80cerrar paréntesis)³ + abrir paréntesis(2x − 29cerrar paréntesis)³ + abrir paréntesis(−2x + 65cerrar paréntesis)³
  • 540x + 38 = abrir paréntesis(5x − 285cerrar paréntesis)³ + abrir paréntesis(−5x + 267cerrar paréntesis)³ + abrir paréntesis(3x − 140cerrar paréntesis)³ + abrir paréntesis(−3x + 190cerrar paréntesis)³
  • 810x + 56 = abrir paréntesis(5x − 755cerrar paréntesis)³ + abrir paréntesis(−5x + 836cerrar paréntesis)³ + abrir paréntesis(9x − 1445cerrar paréntesis)³ + abrir paréntesis(−9x + 1420cerrar paréntesis)³
  • 1080x + 380 = abrir paréntesis(−x − 1438cerrar paréntesis)³ + abrir paréntesis(x + 1258cerrar paréntesis)³ + abrir paréntesis(−3x − 4037cerrar paréntesis)³ + abrir paréntesis(3x + 4057cerrar paréntesis)³
  • 1620x + 1334 = abrir paréntesis(−5x − 3269cerrar paréntesis)³ + abrir paréntesis(5x + 3107cerrar paréntesis)³ + abrir paréntesis(−9x − 5714cerrar paréntesis)³ + abrir paréntesis(9x + 5764cerrar paréntesis)³
  • 1620x + 1352 = abrir paréntesis(−5x + 434cerrar paréntesis)³ + abrir paréntesis(5x − 353cerrar paréntesis)³ + abrir paréntesis(9x − 722cerrar paréntesis)³ + abrir paréntesis(−9x + 697cerrar paréntesis)³
  • 2160x + 362 = abrir paréntesis(−5x − 180cerrar paréntesis)³ + abrir paréntesis(5x + 108cerrar paréntesis)³ + abrir paréntesis(−6x − 149cerrar paréntesis)³ + abrir paréntesis(6x + 199cerrar paréntesis)³
  • 6480x + 794 = abrir paréntesis(−5x − 83cerrar paréntesis)³ + abrir paréntesis(5x + 11cerrar paréntesis)³ + abrir paréntesis(−6x − 35cerrar paréntesis)³ + abrir paréntesis(6x + 85cerrar paréntesis)³

Si n = 164, 596, 1892, 2324, 2756, 4052, 4484 (mod 6480) se utiliza la fórmula:

54x + 2 = abrir paréntesis(29484x² + 2211x + 43cerrar paréntesis)³ + abrir paréntesis(−29484x² − 2157x − 41cerrar paréntesis)³ + abrir paréntesis(9828x² + 485x + 4cerrar paréntesis)³ + abrir paréntesis(−9828x² − 971x − 22cerrar paréntesis)³

Si n = 254, 902, 1442, 1874, 1982, 2414, 3062, 3494, 3602, 4034, 4142, 5114, 5222, 5654, 5762, 6302 (mod 6480) se utiliza un método debido a Demjanenko que puede dar resultados de cientos de dígitos.

En el resto de los casos se reemplaza n por −n y luego se multiplican las soluciones por −1.

Expresiones

Además de ingresar números en la caja de entrada, se pueden escribir expresiones numéricas incluyendo paréntesis. A continuación se muestran las operaciones permitidas:

  • + para suma
  • - para resta
  • * para multiplicación
  • / para división entera
  • % para el resto de la división entera
  • ^ o ** para exponenciación (el exponente debe ser mayor o igual que cero).
  • <, ==, >; <=, >=, != para comparaciones. Los operadores devuelven cero si es falso y -1 si es verdadero.
  • AND, OR, XOR, NOT para lógica binaria. Las operaciones se hacen en binario (base 2). Se agregan infinitos ceros (unos) a la izquerda de los números positivos (negativos).
  • SHL o <<: Si b ≥ 0, a SHL b desplaza el valor a a la izquierda la cantidad de bits especificada por b. Esto equivale a a × 2b. En caso contrario, a SHL b desplaza el valor a a la derecha la cantidad de bits especificada por −b. Esto equivale a floor(a / 2b). Ejemplo: 5 SHL 3 = 40.
  • SHR o >>: Si b ≥ 0, a SHR b desplaza el valor a a la derecha la cantidad de bits especificada por b. Esto equivale a floor(a / 2b). En caso contrario, a SHR b desplaza el valor a a la izquierda la cantidad de bits especificada por −b. Esto equivale a a × 2b. Ejemplo: -19 SHR 2 = -5.
  • n!: factorial (n debe ser mayor o igual que cero). Ejemplo: 6! = 6 × 5 × 4 × 3 × 2 = 720.
  • n!! ... !: factorial múltiple (n debe ser mayor o igual que cero). Es el producto de n por nk por n2k ... (todos los números son mayores que cero) donde k es la cantidad de signos de exclamación. Ejemplo: 7!! = 7 × 5 × 3 × 1 = 105.
  • p#: primorial (producto de todos los primos menores o iguales a p). Ejemplo: 12# = 11 × 7 × 5 × 3 × 2 = 2310.
  • B(n): Número probablemente primo anterior a n. Ejemplo: B(24) = 23.
  • F(n): Número de Fibonacci Fn que corresponde a la secuencia 0, 1, 1, 2, 3, 5, 8, 13, 21, etc. donde cada elemento es igual a la suma de los dos anteriores. Ejemplo: F(7) = 13.
  • L(n): Número de Lucas Ln = Fn-1 + Fn+1
  • N(n): Número probablemente primo posterior a n. Ejemplo: N(24) = 29.
  • P(n): particiones irrestrictas (cantidad de descomposiciones de n en sumas de números enteros sin tener en cuenta el orden). Ejemplo: P(4) = 5 porque el número 4 se puede particionar de 5 formas distintas: 4 = 3+1 = 2+2 = 2+1+1 = 1+1+1+1.
  • Gcd(m,n, ...): Máximo común divisor de estos números enteros. Ejemplo: GCD(12,16) = 4.
  • Lcm(m,n, ...): Mínimo común múltiplo de estos números enteros. Ejemplo: LCM(12,16,24) = 48.
  • Modinv(m,n): inverso de m modulo n, sólo válido cuando m y n son coprimos, es decir que no tienen factores en común. Ejemplo: Modinv(3,7) = 5 porque 3 × 5 ≡ 1 (mod 7)
  • Modpow(m,n,r): halla mn módulo r. Ejemplo: Modpow(3, 4, 7) = 4, porque 34 ≡ 4 (mod 7).
  • Jacobi(m,n): obtiene el símbolo de Jacobi de m y n. Cuando el segundo argumento es primo, el resultado es cero si m es múltiplo de n, es uno si hay una solución a x² ≡ m (mód n) y es igual a −1 cuando la congruencia mencionada no tiene soluciones.
  • IsPrime(n): retorna cero si n no es un primo probable y -1 si lo es. Ejemplo: IsPrime(5) = -1.
  • Sqrt(n): parte entera de la raíz cuadrada del argumento.
  • NumDigits(n,r): cantidad de dígitos de n en base r. Ejemplo: NumDigits(13, 2) = 4 porque 13 en binario (base 2) se expresa como 1101.
  • SumDigits(n,r): suma de dígitos de n en base r. Ejemplo: SumDigits(213, 10) = 6 porque la suma de los dígitos expresados en decimal es 2+1+3 = 6.
  • RevDigits(n,r): halla el valor que se obtiene escribiendo para atrás los dígitos de n en base r. Ejemplo: RevDigits(213, 10) = 312.

Puedes usar el prefijo 0x para números hexadecimales, por ejemplo 0x38 es igual a 56.

Código fuente

Se puede bajar el código fuente de este programa y el del viejo applet de suma de cuatro cubos desde GitHub. El código fuente está escrito en lenguaje C, por lo que es necesario Emscripten para generar Javascript.

Escrito por Dario Alpern. Actualizado el 26 de noviembre de 2021.

Si encuentra algún error o tiene algún comentario, por favor llene el formulario.