Suma de dos cuadrados y una potencia perfecta

  1. Alpertron
  2. Programas
  3. Suma de dos cuadrados y una potencia


Acciones
Funciones

Esta aplicación Web encuentra la descomposición de cualquier número entero en una suma de dos cuadrados perfectos y un cubo perfecto o quinta o séptima potencia.

Método

Sea r el exponente del tercer número: 3, 5 o 7, y n el número a descomponer.

  • Paso 1: Calcular el primer valor potencial de c como la r-ésima raíz redondeado al entero inmediatamente inferior (hacia menos infinito).
  • Paso 2: Sea d = nck. El número d no es negativo.
  • Paso 3: Tratar de descomponer d como suma de dos cuadrados.
    • Paso 3.1: Si d vale cero, la salida es is 0 = 02 + 02. Ir al paso 5.
    • Paso 3.2: Calcular p y q tales que d = p × 4q, donde p no es múltiplo de 4.
    • Paso 3.3: Si el resto de la división de p dividido 8 no es 1, 2 o 5, el número d no se puede expresar como suma de dos cuadrados, así que se debe restar 1 a c y volver al paso 2.
    • Paso 3.4: Hacer divisiones sucesivas para hallar factores primos pequeños de d. La cota superior en este programa es 32767.
    • Paso 3.5: Si hay un factor primo de la forma 4k + 3 y su multiplicidad es impar, d no puede ser la suma dos cuadrados, así que se debe restar 1 a c y volver al paso 2.
    • Paso 3.6: Si el cofactor no es un primo probable, no podemos determinar si d puede ser la suma de dos cuadrados, así que se debe restar 1 a c y volver al paso 2.
    • Paso 3.7: Usar los métodos para dos cuadrados que se muestran en la página Todo entero positivo es una suma de cuatro cuadrados perfectos para hallar d = a2 + b2.
  • Paso 4: Multiplicar las variables a y b por 2q.
  • Paso 5: Mostrar la descomposición como n = a2 + b2 + ck.

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.
  • Ans: obtiene la última respuesta.
  • 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).
  • Totient(n): cantidad de enteros positivos menores que n coprimos con n. Ejemplo: Totient(6) = 2 porque 1 y 5 no tienen factores en común con 6.
  • 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.
  • Random(m,n): número entero aleatorio entre m y n.
  • Abs(n): valor absoluto de n.
  • 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.
  • Iroot(n,r): Raíz r-ésima entera del primer argumento. Ejemplo: Iroot(8, 3) = 2.
  • 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 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 17 de septiembre de 2022.

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