Exponenciación modular
Eleve un número a una potencia y quédese solo con el resto: 2 elevado a 10 módulo 1000 da 24, y 3 elevado a 5 módulo 13 da 9. Cada valor admite hasta 2048 cifras y el resultado es exacto. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Base entera
- 2
- Exponente entero no negativo
- 10
- Módulo entero positivo m
- 1000
- Resultado
- 24
La exponenciación modular responde con claridad a una pregunta: ¿cuánto es la base elevada a un exponente, reducido módulo m? Ese resto es la columna vertebral de demos RSA de juguete, ejemplos de clase Diffie–Hellman, tareas de concursos de programación y cualquier script que deba elevar enteros grandes sin rebasar los límites nativos.
Qué calcula la exponenciación modular
Dados enteros base, exponent y módulo m, la exponenciación modular devuelve el resto único r en el rango de 0 a m menos uno tal que la base a la potencia del exponente es congruente con r módulo m. En símbolos, r ≡ base^exponent (mod m). La potencia ingenua multiplica la base por sí misma exponent veces y solo entonces reduce, lo que hace crecer valores intermedios enormes y falla en punto flotante ordinario o enteros de ancho fijo.
La exponenciación modular rápida en cambio reduce tras cada multiplicación y eleva al cuadrado la base en curso mientras recorre los bits del exponente de menos a más significativo, de modo que el trabajo escala con la longitud en bits del exponente y no con su magnitud decimal. Cuando m vale uno todo entero es congruente con cero, así que el resultado es siempre cero.
Cuando el exponente es cero el resultado es uno para cualquier base siempre que m sea mayor que uno, coincidiendo con la convención habitual del producto vacío. Las bases negativas se reducen primero al sistema de residuos no negativos módulo m para que la cadena de multiplicaciones nunca mezcle restos con signo. Los exponentes negativos se rechazan porque exigen inversos modulares que pueden no existir y quedan fuera del alcance de esta calculadora.
Límites, rendimiento y dónde encaja
La exponenciación modular binaria realiza un número constante de multiplicaciones modulares por bit del exponente, de modo que duplicar el exponente duplica aproximadamente el trabajo mientras un módulo mayor encarece cada multiplicación. Los docentes la usan para verificar cálculos manuales de a^b mod m antes de que los alumnos entreguen demostraciones.
Los desarrolladores la integran en tests de propiedades que afirman que los protocolos se mantienen en clases de residuo, en sistemas de juegos o ranking que pliegan contadores grandes módulo un primo, y en pipelines de scripting que no deben reimplementar cuadrado-y-multiplica en cada lenguaje.
Qué puede hacer con ella
Verificar respuestas de concurso y tareas a^b mod m
Alumnos y entrenadores pueden comprobar potencias modulares sin multiplicar a mano intermedios enormes ni confiar en una calculadora que pierde precisión en silencio más allá de 2^53.
Sembrar demos cripto y tests unitarios de protocolos
Scripts que necesitan un paso determinista base^exp mod m para RSA de juguete, Diffie–Hellman o aserciones de clases de residuo pueden llamar a esto en lugar de incluir su propia potencia BigInt.
Plegar contadores grandes a un rango de residuo fijo
Juegos, sistemas de ranking y ayudas de partición que elevan un entero y luego reducen módulo m obtienen un resto exacto sin sorpresas de redondeo en punto flotante.
Preguntas frecuentes
¿Qué es la exponenciación modular?
Es calcular la base elevada a un exponente y tomar el resto módulo m, escrito base^exponent mod m. Esta calculadora devuelve ese resto no negativo como result.
¿Por qué se rechaza un exponente negativo?
Los exponentes negativos significan potencias recíprocas y exigen inversos modulares, que pueden no existir cuando base y m no son coprimos.
¿Cómo funciona la calculadora de exponenciación modular?
Usa cuadrado-y-multiplica binario sobre BigInt: por cada bit del exponente eleva al cuadrado la base en curso módulo m y multiplica en el resultado cuando el bit está activo.
¿Es gratuita la calculadora de exponenciación modular?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Qué tamaño pueden tener los números?
La base, la potencia y el módulo admiten hasta 2048 cifras cada uno. Alcanza para problemas de concurso, tareas y muchas demostraciones de criptografía, con un resultado exacto y rápido.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/numth/modular-exponentiation \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base":"2","exponent":"10","modulus":"1000"}'const res = await fetch("https://api.kit.forhosting.com/numth/modular-exponentiation", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base": "2",
"exponent": "10",
"modulus": "1000"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/modular-exponentiation",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base": "2",
"exponent": "10",
"modulus": "1000"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/modular-exponentiation", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base":"2","exponent":"10","modulus":"1000"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base":"2","exponent":"10","modulus":"1000"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/modular-exponentiation", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"base": "2",
"exponent": "10",
"modulus": "1000"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.modular_exponentiation",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_digits | 2048 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Esta calculadora de exponenciación modular ejecuta cuadrado-y-multiplica binario sobre BigInt para que la respuesta sea exacta, determinista y gratuita de probar en su navegador antes de llamar al mismo núcleo a través de la API.
Qué calcula la exponenciación modular
El módulo debe ser al menos uno; módulos cero o negativos no definen un resto no negativo estándar y devuelven invalid_input en lugar de inventar una respuesta.
Cómo invocar la API y leer el resultado
Envíe un cuerpo JSON con tres campos obligatorios: base, exponent y modulus. Cada uno puede ser una cadena de entero decimal o un número JSON; se prefiere la forma cadena para valores mayores que el rango seguro de enteros de JavaScript. Se aceptan los alias a para base, exp o e o power para exponent, y m o mod para modulus, de modo que formularios y clientes manuales compartan un solo contrato. En éxito la respuesta devuelve base, exponent y modulus como cadenas decimales normalizadas y añade result como el resto no negativo de base^exponent mod modulus. Comprobaciones clásicas: base 2, exponent 10, modulus 1000 produce result 24; base 3, exponent 5, modulus 13 produce 9; base 7, exponent 0, modulus 5 produce 1. La validación fallida —campos ausentes, no enteros, fracciones, modulus menor que uno, un exponente negativo, o un valor más largo que el límite de dígitos publicado— devuelve invalid_input y nunca se cobra. El precio es un $0.002 fijo por petición exitosa (ítem unitario con precio marginal cero).
Límites, rendimiento y dónde encaja
Esta capacidad limita base, exponent y modulus a 2048 dígitos decimales cada uno —suficiente para problemas de concurso, tareas y muchas demos a escala criptográfica—, pero lo bastante acotado para que BigInt puro en Worker siga siendo interactivo sin lanzar una pila multiprecisión pesada. Si necesita módulos de un millón de dígitos, descomposiciones por el teorema chino del resto o primitivas criptográficas en tiempo constante, necesita una biblioteca dedicada; esta herramienta ligera de parse es intencionadamente la calculadora y el paso de API compartidos para potencias modulares exactas. Combínela con herramientas separadas de factorización o inversa cuando un flujo necesite el kit modular completo; este endpoint responde solo a la pregunta de potenciar-y-reducir para que la intención de búsqueda quede clara y la respuesta sea mínima.
Preguntas técnicas
¿Qué ocurre si el módulo es menor que 1?
El módulo debe ser al menos 1. Módulos cero o negativos no definen el resto no negativo estándar usado aquí y devuelven invalid_input.