ForHosting KIT · Matemáticas

Factorización de Pollard p−1

Encuentra un factor de un número compuesto cuando uno de sus primos p tiene un p − 1 suave: 1003 con cota 16 se divide en 17 y 59, porque 17 − 1 es 16. Si no aparece nada, suba la cota. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
N
1003
Cota
16
Obtiene
Factor
17
Cofactor
59
Base
2

El método p menos uno de Pollard es un algoritmo clásico de factorización de enteros que halla un factor no trivial de un módulo compuesto n cuando al menos un factor primo p de n tiene la propiedad de que p menos uno es suave respecto de una cota B elegida: cada potencia prima en la factorización de p menos uno es a lo sumo B. Estudiantes de teoría de números elemental, competidores de CTF y aprendices de criptografía encuentran este algoritmo al estudiar por qué los módulos RSA deben evitar primos con totientes suaves. Esta capacidad ejecuta una búsqueda determinista de etapa uno de Pollard p−1: construye el producto de potencias primas hasta B, eleva una base pequeña a ese exponente módulo n y devuelve el mcd de esa potencia menos uno con n cuando el mcd es un factor propio.

Cómo Pollard p−1 halla un factor a partir de un p−1 suave

Fije un entero compuesto n y una cota de suavidad positiva B. La observación de Pollard es sencilla: si p es un divisor primo de n y toda potencia prima que divide a p menos uno es a lo sumo B, entonces el mínimo común múltiplo de los enteros del uno al B es múltiplo de p menos uno.

Por el pequeño teorema de Fermat, cualquier base a coprima con p cumple que a elevado a p menos uno es congruente con uno módulo p, y por tanto a elevada a ese gran mcm también es congruente con uno módulo p. Calcular la misma potencia módulo n y tomar el máximo común divisor del resultado menos uno con n suele producir p u otro factor no trivial.

En la práctica la implementación nunca construye el mcm completo de forma explícita; criba los primos hasta B y, para cada primo q, eleva el acumulador en curso a la mayor potencia de q que no supere B, todo módulo n. Tras cada paso de potencia prima evalúa el mcd del acumulador menos uno con n. Un mcd intermedio no trivial se devuelve de inmediato.

Si el mcd colapsa a n, un recorrido de recuperación más fino sobre exponentes menores intenta aislar un solo factor primo antes de abandonar esa base. Se prueban varias bases pequeñas para que órdenes desafortunados de la base dos no oculten un factor que de otro modo sería B-suave. El método no es un algoritmo de factorización completa: devuelve un factor no trivial y el cofactor correspondiente.

Quien necesite la factorización prima completa puede alimentar cada pieza compuesta a una herramienta de factorización en primos o subir B y volver a ejecutar. El éxito solo está garantizado en el escenario de p−1 suave; factores primos grandes de p menos uno obligan a una B mayor o a otro algoritmo, como el método de curvas elípticas o la criba cuadrática.

Cuándo conviene este método de factorización

Los cursos de criptografía usan Pollard p−1 para mostrar por qué los primos con predecesores suaves son peligrosos al generar parámetros RSA y Diffie–Hellman; una herramienta en vivo que acepta n y B permite al instructor demostrar una división en clase sin escribir a mano la potenciación modular.

Las plataformas CTF y de tareas necesitan un oráculo determinista que o bien devuelva un factor documentado para semiprimos clásicos como mil tres con cota dieciséis, o bien rechace cotas demasiado pequeñas para que los correctores puedan marcar tanto factores correctos como razonamientos de fallo correctos. Los ingenieros de seguridad que auditan generación de claves heredada pueden cribar módulos candidatos en busca de factores con p−1 suave antes de que lleguen a producción.

Autores de notebooks que ya tienen una rutina general de factorización en primos aún se benefician de un extremo p−1 explícito cuando la lección es el método en sí y no la lista completa de factores. Mantenga n dentro del límite de dígitos, elija B lo bastante grande para cubrir el mayor factor primo de p menos uno de algún primo p que divida n, y obtendrá factores reproducibles para docencia, write-ups de CTF y auditorías ligeras sin montar un sistema completo de álgebra computacional.

Higiene de módulos candidatos

Criba módulos candidatos RSA o Diffie–Hellman en busca de factores con p−1 suave antes del despliegue, sin importar un suite completo de factorización.

¿Qué es el método de factorización p−1 de Pollard?

Es un algoritmo de etapa uno que calcula una gran potencia suave de una base módulo n y devuelve gcd(a^M − 1, n). Halla un factor p cuando p−1 es B-suave para la cota B elegida.

¿Cuándo falla el método al hallar un factor?

Cuando n es primo, cuando todo factor primo p de n tiene un divisor primo de p−1 mayor que B, o cuando la recuperación no puede aislar un factor propio.

¿Devuelve la factorización prima completa?

No. Devuelve un factor no trivial y el cofactor n/factor (el menor primero). Factorice cada pieza con una herramienta de factorización en primos si necesita todas las potencias primas.

¿Qué cota debo elegir?

Empiece con una pequeña y súbala si no aparece ningún factor. La cota debe cubrir cada potencia de primo de p − 1 para al menos un factor primo p de su número. Se acepta cualquier entero del 2 al 50.000.

¿Cuántas cifras puede tener el número?

Hasta 18 cifras, escrito como entero sin puntos, comas ni espacios. Los números pares devuelven el factor 2 de inmediato, y un número primo no da factor, porque no hay nada que dividir.

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/pollard-p-minus-one

¿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/pollard-p-minus-one \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"n":"1003","bound":16}'
{
  "n": "1003",
  "bound": 16
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "numth.pollard_p_minus_one",
  "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.

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.

Si la cota es demasiado estrecha, n es primo o todo factor resiste el método, la tarea falla con invalid_input en lugar de inventar un factor. La vía gratuita del navegador y la API de pago comparten el mismo módulo BigInt puro, de modo que las comprobaciones de tareas y la automatización nunca discrepan.

Contrato de entrada, forma de la respuesta y modos de fallo

El campo n es el entero a factorizar: un entero seguro de JavaScript o una cadena decimal simple sin comas, espacios ni notación científica, de al menos dos y como máximo dieciocho dígitos decimales. Ejemplo: n igual a mil tres y bound igual a dieciséis devuelve factor diecisiete y cofactor cincuenta y nueve porque diecisiete menos uno es dieciséis, que es dieciséis-suave. Si n es par se devuelve de inmediato el factor dos sin una búsqueda completa de etapa uno. Ese fallo es diseño de producto intencional: un éxito silencioso con factor uno o n rompería automatizaciones que tratan cualquier respuesta doscientos como una división real. Envíe por POST un objeto JSON con dos campos obligatorios. El campo bound es la cota de suavidad B, un entero de dos a cincuenta mil; se aceptan los alias B, b, smoothness_bound y smoothness por comodidad. En caso de éxito el cuerpo repite n como cadena decimal y bound como entero, e informa factor y cofactor como cadenas decimales con el factor menor primero, la base que produjo el factor y method fijado a la cadena pollard_p_minus_one. Campos ausentes, no enteros, n menor que dos, bound fuera del rango publicado y n de más de dieciocho dígitos fallan con invalid_input y no se facturan. Cuando la etapa uno termina todas las bases sin un factor propio —por ejemplo n es primo, o todo factor primo p tiene un divisor primo de p menos uno mayor que B— el manejador también falla con invalid_input y un mensaje de que Pollard p−1 no halló factor no trivial dentro de la cota, invitando a subir B o probar otro n.

Dónde una API de factor p−1 aporta valor real

Como la implementación es parse puro de nivel A, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo ni red de salida, y la validación fallida nunca consume saldo.

Demostraciones de aula de p−1 suave

Muestre cómo una cota B que cubre p−1 de un factor primo de un semiprimo produce una división no trivial, con ejemplos clásicos como n=1003 y B=16.

Autoevaluadores CTF y de tareas

Califique ejercicios de Pollard p−1 con un oráculo determinista que devuelve el factor cuando B basta y invalid_input cuando la cota es demasiado estrecha.

¿Qué entradas exige la API?

El campo n (entero ≥ 2, ≤ 18 dígitos) y el campo bound (suavidad B de 2 a 50000). Los alias incluyen number/value para n y B/smoothness_bound para bound.

¿Cuánto cuesta la factorización de Pollard p−1?

La herramienta del navegador es gratuita. Las solicitudes API usan saldo prepago del KIT a $0.002 por llamada exitosa; la entrada inválida y las cotas fallidas no se facturan.

Ver la documentación completa del KIT →