Prueba Miller–Rabin determinista
97 es primo: supera las siete bases fijas, 2, 3, 5, 7, 11, 13 y 23, que deciden con certeza todo entero hasta 9007199254740991. Si el número es compuesto, verá además la primera base que lo delató. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- N
- 97
- Cota
- 9 007 199 254 740 991
- Cantidad de testigos
- 7
La prueba de Miller–Rabin determinista decide si un entero n es primo aplicando el test de testigo de primo probable fuerte frente a una lista corta y fija de bases que resuelven todo entero por debajo de un límite de garantía publicado. A diferencia de una ejecución probabilística de Miller–Rabin que elige testigos al azar y solo estima el error, esta capacidad usa siempre las mismas bases, devuelve siempre el mismo veredicto para el mismo n y rechaza la entrada que supere el límite donde esas bases ya no están demostradas como suficientes. Usted envía un único número entero al menos dos y como máximo el límite, y recibe una bandera de primalidad, la lista de testigos, el propio límite y—si el número es compuesto—el primer testigo que lo demostró.
Cómo funciona el test de primo probable fuerte con bases fijas
Miller–Rabin reescribe un candidato impar n como n menos uno igual a d por dos a la s con d impar; luego, para cada testigo a, calcula a elevado a d módulo n. Si esa potencia es uno o n menos uno, el testigo pasa. En caso contrario el algoritmo eleva al cuadrado el valor hasta s menos una veces y acepta el testigo solo si algún cuadrado intermedio vale n menos uno; cualquier otra trayectoria demuestra que n es compuesto para esa base.
Un número que supera todos los testigos se llama primo probable fuerte respecto a esas bases. Para conjuntos fijos elegidos con cuidado, resultados de teoría de números muestran que no hay compuesto por debajo de un umbral conocido que engañe a todas las bases del conjunto—así el resultado de primo probable se convierte en primo verdadero dentro del límite.
Esta capacidad usa las siete bases dos, tres, cinco, siete, once, trece y veintitrés, suficientes para todo entero de sesenta y cuatro bits y por tanto para todo entero seguro de JavaScript hasta nueve cuatrillones. Los primos diminutos dos y tres se resuelven como primos. Cuando un testigo divide n y es menor que n, ese testigo se informa como base fallida porque n es un múltiplo evidente.
Qué puede hacer con ella
Enseñar certificados Miller–Rabin de bases fijas
Muestre a los estudiantes un veredicto primo o compuesto junto con la lista exacta de testigos y el límite de garantía, para que la diferencia frente a pruebas probabilísticas con testigos aleatorios sea concreta.
Validar parámetros con forma de primo bajo un límite
Rechace valores de configuración, semillas de rompecabezas o módulos criptográficos de juguete que fallen Miller–Rabin de bases fijas, y registre el testigo fallido en la pista de auditoría.
Preguntas frecuentes
¿Cuánto cuesta la prueba de Miller–Rabin determinista?
La misma comprobación también se ejecuta gratis en su navegador en esta página; la entrada inválida no se factura.
¿Qué números se aceptan?
Enteros completos desde 2 hasta el límite de garantía publicado 9007199254740991.
¿Qué bases testigo se usan?
La lista fija 2, 3, 5, 7, 11, 13 y 23. Se devuelven en el campo witnesses en cada respuesta exitosa para que los clientes no tengan que codificar el conjunto a mano.
¿Es este un Miller–Rabin probabilístico?
No. Las bases son fijas y están demostradas como suficientes para todo entero en el límite soportado, de modo que el mismo n produce siempre el mismo veredicto determinista de primo o compuesto.
¿Qué ocurre si n es mayor que el límite?
La capacidad no afirmará un veredicto determinista fuera del rango donde las bases fijas están certificadas.
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/miller-rabin-deterministic \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":97}'const res = await fetch("https://api.kit.forhosting.com/numth/miller-rabin-deterministic", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 97
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/miller-rabin-deterministic",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 97
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/miller-rabin-deterministic", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":97}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":97}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/miller-rabin-deterministic", 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
{
"n": 97
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.miller_rabin_deterministic",
"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.
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
La misma aritmética modular pura alimenta la ruta gratuita del navegador y la de la API, de modo que los controles de deberes, juguetes criptográficos y scripts de automatización no discrepan ante un número de Carmichael límite o un seudoprimo fuerte.
Qué devuelve Miller–Rabin determinista y cómo funciona el límite
Cada llamada exitosa responde cuatro preguntas relacionadas: si n es primo bajo la suite de Miller–Rabin de bases fijas, qué bases testigo se aplicaron, cuál es el mayor entero que esta suite garantiza decidir correctamente y—si n es compuesto—qué testigo falló primero el test de primo probable fuerte. Ese corte duro es la diferencia de producto frente a un comprobador genérico de primalidad que podría cambiar de estrategia en silencio o afirmar primalidad sin declarar su límite de certificado. La respuesta es un objeto JSON compacto con un indicador booleano prime, el entero n devuelto, un array ordenado witnesses, el límite numérico, un witness_count, un campo failing_witness (null para primos, una base concreta para compuestos) y una etiqueta method con miller_rabin_deterministic para que los clientes registren la ruta del algoritmo. La entrada ausente, fraccionaria, no numérica o estrictamente menor que dos se rechaza con invalid_input antes de cualquier exponenciación modular. Los valores mayores que el límite de garantía publicado también se rechazan con invalid_input y un mensaje que nombra el límite, porque una lista fija de testigos solo es un certificado matemático dentro de ese rango; por encima, las mismas bases podrían dejar un compuesto sin detectar. Use este endpoint cuando necesite un veredicto auditable de Miller–Rabin determinista con la lista de testigos y el límite escritos en el resultado, no una conjetura probabilística ni una factorización completa de cada divisor.
Cómo funciona el test de primo probable fuerte con bases fijas
Los pares compuestos se rechazan de inmediato con failing_witness dos sin recorrer el bucle completo.
Dónde una API de Miller–Rabin determinista aporta valor
Los cursos de criptografía y los entrenadores de CTF usan una prueba de Miller–Rabin determinista para mostrar a los estudiantes la diferencia entre comprobaciones probabilísticas con testigos aleatorios y certificados de bases fijas que nombran su límite de garantía en la respuesta. Los desarrolladores de aplicaciones validan valores de configuración con forma de primo, semillas de rompecabezas o parámetros toy de Diffie–Hellman antes de un pipeline más largo, capturando pares y compuestos pequeños sin montar un sistema de álgebra computacional. Prefiera esta herramienta cuando la intención de búsqueda sea concretamente el algoritmo de Miller–Rabin determinista con testigos fijos y un límite duro—no cuando necesite el menor divisor de un compuesto, una factorización prima completa, Lucas–Lehmer para números de Mersenne o pruebas probabilísticas con una lista de testigos personalizada que usted suministre. Los ingenieros de datos filtran columnas numéricas que afirman ser primos y guardan el campo failing_witness en el registro de auditoría cuando una fila falla. Como la capacidad es de nivel A, usted puede pegar un número en esta página y ejecutar la lógica idéntica gratis en el navegador; automatice el mismo contrato después a $0.002 por petición al integrar tareas en scripts o SDK. Mantenga n un entero de al menos dos dentro del límite publicado, trate invalid_input como corrección del cliente y no como reintento, y registre los campos witnesses y bound siempre que necesite un certificado reproducible de lo comprobado.
Casos de integración
Anclar pruebas unitarias de primalidad modular
Afirme primos dorados, compuestos y rechazos fuera de límite frente a un oráculo estable de Miller–Rabin determinista antes de publicar un cambio de biblioteca criptográfica o de teoría de números.