Prueba de primalidad de Proth con testigo
La prueba de primalidad de Proth comprueba un número escrito como k × 2^n + 1 mediante el teorema de Proth y un testigo proporcionado por usted.
Ejecutar — gratis
Primero verifica que k sea positivo e impar, que n sea positivo y que k sea menor que 2^n. Después calcula exactamente la potencia modular requerida. Una congruencia válida demuestra que el número de Proth es primo; un testigo fallido se declara inconcluso, salvo que revele un factor.
Introduzca un número de Proth auténtico y un testigo
Un número de Proth tiene la forma exacta N = k × 2^n + 1, donde k es un entero positivo impar, n es un entero positivo y k es estrictamente menor que 2^n. Todas estas condiciones son necesarias. La calculadora recibe k y el testigo como texto decimal para conservar valores grandes sin el redondeo propio de la coma flotante. Introduzca n como entero entre 1 y 10,000. La herramienta construye N en lugar de solicitarlo por separado, evitando discrepancias entre el número declarado y sus parámetros. También exige que el testigo esté estrictamente entre 1 y N. Si k es par, algún valor no es positivo o k es mayor o igual que 2^n, la entrada se rechaza como ajena a la forma de Proth, sin aplicar un teorema cuyas premisas no se cumplen. El número, el exponente, el testigo y el residuo se devuelven como cadenas decimales cuando corresponde, para que usted pueda auditarlos y copiarlos en otra herramienta de aritmética exacta.
Interprete correctamente lo que demuestra la congruencia
Para un número de Proth válido N, el teorema afirma que N es primo si existe un entero a tal que a^((N−1)/2) sea congruente con −1 módulo N. El testigo suministrado representa a, y la calculadora evalúa la potencia modular mediante cuadrados sucesivos, sin construir primero la inmensa potencia ordinaria. En la salida, `residue` es el residuo no negativo mínimo y `passes_test` vale true exactamente cuando coincide con N−1, la representación modular de −1. En ese caso, `prime_proven` vale true y el veredicto es `prime`: se trata de un certificado determinista bajo las condiciones de Proth ya validadas, no de una estimación de primo probable. La respuesta incluye el exponente exacto (N−1)/2 para que usted reproduzca la congruencia de manera independiente. El algoritmo solo usa operaciones enteras, no elige testigos al azar ni consulta tablas o servicios remotos. Por ello, una misma entrada siempre genera el mismo resultado y muestra todos los valores esenciales usados por el teorema.
Trate de forma correcta un testigo fallido
Que un testigo no produzca −1 no demuestra por sí solo que el número sea compuesto. Únicamente indica que ese testigo concreto no satisface la condición suficiente del teorema de Proth. Por eso la calculadora devuelve `inconclusive`, y no `composite`, cuando el residuo difiere y el testigo es coprimo con N. Usted puede probar después otro testigo elegido con criterio matemático o emplear otro método determinista de primalidad. Existe una excepción útil: antes de interpretar la congruencia, se calcula el máximo común divisor del testigo y N. Si el valor es un factor propio, el resultado es concluyentemente `composite` y se devuelve dicho factor. Esta distinción evita convertir por error un teorema unidireccional en una prueba bidireccional inválida. También facilita la automatización: acepte `prime` como demostración, rechace `composite` cuando aparezca un factor y derive `inconclusive` hacia otra prueba, sin tratarlo silenciosamente como un fallo definitivo.
Qué puede hacer con ella
Verificar un candidato de una búsqueda
Compruebe un par k y n generado con un testigo elegido antes de registrar el candidato como primo demostrado.
Enseñar el teorema de Proth
Muestre el exponente exacto, el residuo modular y la diferencia entre una demostración y un testigo inconcluso.
Añadir un control determinista
Valide las condiciones de Proth y encamine resultados primos, compuestos o inconclusos sin aritmética de coma flotante.
Preguntas frecuentes
¿Cuánto cuesta una solicitud API?
Cada solicitud API cuesta $0.002. El cálculo también puede ejecutarse gratuitamente en el navegador.
¿Qué convierte una entrada en número de Proth?
Debe ser igual a k × 2^n + 1, con k positivo e impar, n positivo y k < 2^n.
¿Un testigo fallido demuestra que el número es compuesto?
No. Normalmente es inconcluso. Solo se declara compuesto si el testigo revela un factor común no trivial.
¿Por qué k y el testigo se introducen como texto?
Las cadenas decimales conservan enteros mayores que el intervalo numérico seguro de JavaScript sin redondearlos.
¿Un resultado positivo es probabilístico?
No. Una vez validadas las condiciones de Proth, la congruencia requerida constituye una demostración de primalidad.
¿La herramienta elige testigos automáticamente?
No. Usted proporciona el testigo y la capacidad comprueba ese valor exacto de forma determinista.
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/proth-test \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"k":"3","n":3,"witness":"3"}'const res = await fetch("https://api.kit.forhosting.com/numth/proth-test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"k": "3",
"n": 3,
"witness": "3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/proth-test",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"k": "3",
"n": 3,
"witness": "3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/proth-test", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"k":"3","n":3,"witness":"3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"k":"3","n":3,"witness":"3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/proth-test", 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
{
"k": "3",
"n": 3,
"witness": "3"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.proth_test",
"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_n | 10000 |
max_decimal_digits | 3011 |
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. |