ForHosting KIT · Utilidades de desarrollo

Comprobador de pseudoprimos de Fermat para cualquier base

El comprobador de pseudoprimos de Fermat recibe un entero compuesto n y una base a, calcula de forma exacta el residuo de a elevado a n menos uno módulo n e indica si ese residuo es uno.

● BetaGratis · en su navegador
Úselo desde WebAPIEmailTelegramApp pronto

Un compuesto que supera la prueba es pseudoprimo de Fermat para la base elegida: se comporta como un primo en esta prueba concreta aunque no lo sea. También se muestra el máximo común divisor para facilitar la interpretación del resultado.

Qué significa realmente un resultado positivo

El pequeño teorema de Fermat afirma que, si n es primo y a no es divisible por n, entonces a elevado a n menos uno deja residuo uno módulo n. El recíproco no está garantizado. Algunos enteros compuestos también producen residuo uno para determinadas bases; esos números se llaman pseudoprimos de Fermat respecto de dichas bases. Este comprobador exige expresamente que n sea compuesto, verifica primero esa condición y después evalúa la congruencia con aritmética exacta. Cuando passes_fermat_test e is_fermat_pseudoprime son verdaderos, el resultado significa que el compuesto indicado engaña a la prueba de Fermat para esa base concreta. No significa que n sea primo, probablemente primo ni pseudoprimo para todas las bases. La base forma parte de la afirmación y debe acompañar siempre al resultado. El residuo devuelto aporta la prueba aritmética directa: uno implica que supera la prueba; cualquier otro valor implica que falla. El máximo común divisor ayuda además a reconocer bases coprimas y relaciones de factores evidentes.

Cómo se mantiene exacto el cálculo

Las dos entradas se proporcionan como cadenas decimales para evitar que los enteros superiores al rango seguro de JavaScript se redondeen antes del cálculo. El intervalo admitido termina en el mayor entero sin signo de 64 bits, lo que establece un límite claro y verificable para la prueba de primalidad. Antes de ejecutar la prueba de Fermat, el comprobador aplica Miller–Rabin de forma determinista con un conjunto de testigos suficiente para todo ese intervalo. Si detecta un primo, devuelve un error de entrada, pues los primos satisfacen el teorema pero no pueden ser pseudoprimos por definición. Para un compuesto válido, la exponenciación modular usa cuadrados sucesivos en vez de construir el inmenso valor a^(n-1). Cada multiplicación se reduce módulo n, de modo que los valores intermedios permanecen acotados y exactos con BigInt. El algoritmo de Euclides calcula gcd(a,n) por separado. La base debe cumplir 2 <= a <= n - 2. No intervienen testigos aleatorios, fechas, red ni coma flotante.

Uso en estudios y procesos de verificación

Un ejemplo clásico utiliza n = 341 y la base a = 2. Aunque 341 es compuesto, 2^340 es congruente con uno módulo 341, por lo que supera la prueba y es pseudoprimo de Fermat en base dos. Si cambia la base, el mismo compuesto puede fallar; por eso una sola prueba de Fermat no constituye un certificado general de primalidad. En una clase, la salida estructurada permite relacionar directamente la definición con el residuo calculado. En una batería de pruebas, puede conservar vectores conocidos de pseudoprimos y no pseudoprimos sin depender de bibliotecas matemáticas ni de conversiones numéricas propias de una máquina. Para explorar, compare varias bases válidas manteniendo fijo n y observe cuánto importa elegir el testigo. Interprete un resultado verdadero como una demostración de los límites de la prueba de Fermat, nunca como autorización para aceptar el número como primo en código criptográfico o sensible a la seguridad. La API cuesta $0.002 por par comprobado y el navegador ejecuta localmente el mismo cálculo determinista.

Demostrar un pseudoprimo clásico

Verifique que un compuesto conocido como 341 satisface la congruencia de Fermat en base 2 y examine el residuo exacto.

Preparar ejercicios de teoría de números

Compruebe soluciones de problemas que preguntan si un compuesto determinado es pseudoprimo respecto de una base dada.

Probar implementaciones aritméticas

Utilice resultados estructurados y deterministas como vectores de referencia para exponenciación modular o código educativo de primalidad.

¿Cuándo es n pseudoprimo de Fermat en base a?

Debe ser compuesto y satisfacer que a^(n-1) sea congruente con 1 módulo n para la base indicada.

¿Por qué se rechaza un n primo?

Los primos suelen cumplir la congruencia de Fermat, pero el término pseudoprimo solo se aplica a enteros compuestos; aceptar un primo respondería otra pregunta.

¿Un resultado verdadero demuestra que n es primo?

No. El comprobador ya determina que n es compuesto. El resultado verdadero muestra cómo ese compuesto engaña a la prueba para una base.

¿Por qué se introducen n y a como cadenas?

Las cadenas decimales conservan todos los dígitos en la API y el navegador, incluso por encima del rango seguro de los números ordinarios de JavaScript.

¿Cuánto cuesta?

La API cuesta $0.002 por cada par comprobado. El ejecutor del navegador realiza localmente el mismo cálculo.

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.

POSThttps://api.kit.forhosting.com/numth/fermat-pseudoprime-check

¿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.

curl -X POST https://api.kit.forhosting.com/numth/fermat-pseudoprime-check \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"n":"341","a":"2"}'
{
  "n": "341",
  "a": "2"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "numth.fermat_pseudoprime_check",
  "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.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

max_digits20
HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Ver la documentación completa del KIT →