Comprobador de seudoprimos de Lucas
Detecte los compuestos impares que engañan a la prueba de Lucas: con P igual a 1 y Q igual a −1, el compuesto 323 la supera y es el menor seudoprimo de Fibonacci. El resultado muestra D, el símbolo de Jacobi y el índice usado. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- N
- 323
- P
- 1
- Q
- -1
- D
- 5
- Símbolo de Jacobi
- -1
- Índice de U
- 324
- U módulo n
- 0
Un pseudoprimo de Lucas es un entero compuesto impar que aún satisface la misma congruencia de la sucesión U de Lucas que todo primo debe cumplir para parámetros P y Q dados. Criptógrafos, estudiantes de teoría de números e implementadores de tests de primalidad usan esta comprobación para separar primos genuinos de compuestos que engañan una sola capa de Lucas: justo el modo de fallo que la familia Baillie–PSW está pensada para capturar cuando se combina con un test de Fermat fuerte. Este comprobador acepta n junto con P y Q, forma el discriminante D igual a P al cuadrado menos cuatro Q, rechaza la petición cuando D es un cuadrado perfecto, calcula el símbolo de Jacobi de D sobre n, evalúa U en el índice n menos ese símbolo módulo n con una escalera de duplicación binaria, e indica tanto si la congruencia se cumple como si n es compuesto.
Qué es un pseudoprimo de Lucas y cómo funciona el test U
Las sucesiones de Lucas U_k(P, Q) y V_k(P, Q) son las recurrencias enteras definidas por U_0 igual a cero, U_1 igual a uno, V_0 igual a dos, V_1 igual a P, y el paso lineal común X_k igual a P por X_{k-1} menos Q por X_{k-2}. Su discriminante característico es D igual a P al cuadrado menos cuatro Q. Para un entero impar n mayor que uno coprimo con Q por D, sea epsilon el símbolo de Jacobi de D sobre n, que vale más uno o menos uno.
Todo primo impar p que cumple la coprimidad obedece U_{p menos epsilon} congruente con cero módulo p. Un compuesto impar positivo n que aún satisface la misma congruencia se llama pseudoprimo de Lucas con parámetros P y Q. El caso clásico de Fibonacci usa P igual a uno y Q igual a menos uno, de modo que U_k es la sucesión de Fibonacci y D vale cinco; el menor pseudoprimo de Fibonacci es trescientos veintitrés.
Variantes más fuertes (Lucas extra-fuerte, Frobenius) añaden condiciones sobre V, pero esta capacidad implementa la definición estándar solo con U que usan los libros y notas de investigación sobre pseudoprimos de Lucas de tipos especiales. Saber si un candidato es solo un primo probable o un verdadero seudoprimo le ayuda a decidir si una sola capa de Lucas basta para su presupuesto de riesgo o si debe apilarla con un test fuerte de base dos como en Baillie–PSW.
Qué puede hacer con ella
Regresión de bibliotecas de primalidad
Fije seudoprimos de Lucas y primos conocidos en CI para que su escalera modular U_k nunca se desvíe de la congruencia clásica.
Preguntas frecuentes
¿Qué es un seudoprimo de Lucas con parámetros P y Q?
Un n compuesto impar coprimo con Q·D (D=P²−4Q) tal que U_{n−(D/n)}(P,Q) ≡ 0 (mod n), donde (D/n) es el símbolo de Jacobi. Los primos que pasan el mismo test no se llaman seudoprimos.
¿Por qué el comprobador rechaza un discriminante cuadrado perfecto?
Cuando D = P² − 4Q es un cuadrado perfecto no negativo, las sucesiones de Lucas degeneran y la congruencia de primalidad deja de ser significativa.
¿Es 323 un seudoprimo de Lucas?
Sí. Con P igual a 1 y Q igual a −1, el caso de Fibonacci, D vale 5, el símbolo de Jacobi es −1 y U en el índice 324 es divisible por 323. Como 323 es compuesto, es un seudoprimo de Lucas: el menor de Fibonacci.
¿Qué pasa si pruebo un primo de verdad, como 13?
Supera la prueba de Lucas, pero no se marca como seudoprimo, porque un seudoprimo tiene que ser compuesto. El resultado le indica por separado si se cumple la congruencia y si el número es compuesto.
¿Basta la prueba de Lucas para saber si un número es primo?
No. Algunos compuestos superan una sola capa de Lucas; por eso el método Baillie–PSW la combina con una prueba fuerte de Fermat en base 2. Esta comprobación le muestra si su candidato es uno de esos compuestos.
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/lucas-pseudoprime-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":"323","P":"1","Q":"-1"}'const res = await fetch("https://api.kit.forhosting.com/numth/lucas-pseudoprime-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": "323",
"P": "1",
"Q": "-1"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/lucas-pseudoprime-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": "323",
"P": "1",
"Q": "-1"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/lucas-pseudoprime-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":"323","P":"1","Q":"-1"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":"323","P":"1","Q":"-1"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/lucas-pseudoprime-check", 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": "323",
"P": "1",
"Q": "-1"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.lucas_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.
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
Qué es un pseudoprimo de Lucas y cómo funciona el test U
Cuando D es un cuadrado perfecto no nulo, la forma cerrada al estilo Binet colapsa en una progresión geométrica pura y las sucesiones pierden las propiedades aritméticas que las hacen útiles para tests de primalidad, por lo que este endpoint rechaza esos parámetros con invalid_input en lugar de devolver un cero sin sentido.
Contrato de entrada, campos de respuesta y errores
Tras el análisis, el manejador forma D igual a P al cuadrado menos cuatro Q y lanza error si D es un cuadrado perfecto no negativo, incluido el cero, porque la sucesión degenera. Un primo genuino como trece con los mismos parámetros pasa el test de Lucas pero no se etiqueta como seudoprimo. Envíe un cuerpo JSON con tres campos enteros obligatorios: n, el candidato impar al menos tres; P, el primer parámetro de Lucas; y Q, el segundo. Cada campo puede llegar como número JSON o como cadena de entero decimal. No enteros, campos ausentes, n par y n menor que tres fallan con invalid_input indicando el problema. En caso de éxito el cuerpo devuelve n, P, Q y D como cadenas decimales; jacobi es el símbolo de Jacobi de D sobre n como número del conjunto menos uno, cero o uno; u_index es n menos jacobi cuando el símbolo es no nulo; u_mod_n es U en ese índice reducido módulo n; gcd_ok es verdadero cuando n es coprimo con Q por D; passes_lucas_test es verdadero exactamente cuando la congruencia U se cumple en las condiciones clásicas; is_prime es un veredicto determinista Miller–Rabin en el rango admitido; e is_lucas_pseudoprime es verdadero solo cuando n es compuesto, gcd_ok se cumple, el símbolo de Jacobi es no nulo y la congruencia sigue valiendo. El campo method es siempre la cadena lucas_u_sequence para que los clientes fijen el algoritmo en los registros. Ejemplo: n igual a trescientos veintitrés, P igual a uno, Q igual a menos uno produce D igual a cinco, jacobi igual a menos uno, u_index igual a trescientos veinticuatro, u_mod_n igual a cero, is_prime falso e is_lucas_pseudoprime verdadero. La validación fallida no se cobra; las llamadas correctas cuestan el precio base publicado $0.002 en la ruta API.
Dónde una API de seudoprimos de Lucas aporta valor
Las plataformas de aula y de concursos necesitan un oráculo determinista que marque correctamente seudoprimos de Fibonacci y de Lucas generales sin que el alumnado reescriba a mano código de recurrencia modular que desborda enteros de sesenta y cuatro bits. Los autores de bibliotecas que publican capas Baillie–PSW o solo Lucas usan un comprobador de referencia para regresar su escalera U_k frente a compuestos famosos como trescientos veintitrés antes de afirmar cero contraejemplos conocidos. Los sitios de contenido que posicionan por comprobador de seudoprimos de Lucas ganan una herramienta en vivo cuya ruta gratuita del navegador coincide con la automatización de pago sobre el mismo módulo puro. El material de criptografía puede demostrar que un solo test algebraico no es un certificado de primalidad mostrando un compuesto que aún devuelve passes_lucas_test verdadero mientras is_prime es falso. Los cuadernos de investigación que exploran familias de parámetros en busca de nuevos seudoprimos de Lucas de tipos especiales se benefician de una API de parse compacta que devuelve el estado intermedio completo —D, Jacobi, índice y residuo— para filtrar y graficar sin reimplementar la reciprocidad cuadrática. Como la implementación es pure parse de nivel A, cada llamada exitosa cuesta $0.002 sin tokens de modelo ni red saliente.
Casos de integración
Ejercicios de aula sobre PSP de Fibonacci y Lucas
Permita que el alumnado envíe n con P=1, Q=−1 (u otros parámetros) y compruebe is_lucas_pseudoprime frente a listas de libro como 323.
Barridos de parámetros en investigación
Explore familias de P y Q en busca de n compuestos que aún cumplan U_{n−ε} ≡ 0 (mod n), usando D, jacobi y u_mod_n de la respuesta.
Preguntas técnicas
¿Es 323 un seudoprimo de Lucas?
Sí para los parámetros de Fibonacci P=1, Q=−1 (D=5). Es compuesto (17×19) y aun así U_{324} ≡ 0 (mod 323), de modo que is_lucas_pseudoprime es verdadero.
¿Cuenta un primo verdadero como seudoprimo de Lucas?
No. Los primos verdaderos que satisfacen la congruencia U ponen passes_lucas_test en verdadero e is_prime en verdadero, pero is_lucas_pseudoprime permanece en falso por definición.
¿Cuánto cuesta el comprobador de seudoprimos de Lucas?
La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago KIT a $0.002 por llamada exitosa; la entrada inválida no se cobra.