Verificador de pseudoprimos de Lucas
Encontre os compostos ímpares que enganam o teste de Lucas: com P igual a 1 e Q igual a −1, o composto 323 passa no teste e é o menor pseudoprimo de Fibonacci. O resultado mostra D, o símbolo de Jacobi e o índice usado. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- N
- 323
- P
- 1
- Q
- -1
- D
- 5
- Símbolo de Jacobi
- -1
- Índice de U
- 324
- U módulo n
- 0
Um pseudoprimo de Lucas é um inteiro composto ímpar que ainda satisfaz a mesma congruência da sequência U de Lucas que todo primo deve obedecer para parâmetros P e Q dados. Criptógrafos, estudantes de teoria dos números e implementadores de testes de primalidade usam esta verificação para separar primos genuínos de compostos que enganam uma única camada de Lucas — exatamente o modo de falha que a família Baillie–PSW foi desenhada para capturar quando combinada com um teste de Fermat forte. Este verificador aceita n junto com P e Q, monta o discriminante D igual a P ao quadrado menos quatro Q, rejeita a requisição quando D é um quadrado perfeito, calcula o símbolo de Jacobi de D sobre n, avalia U no índice n menos esse símbolo módulo n com uma escada de duplicação binária, e informa se a congruência vale e se n é composto.
O que é um pseudoprimo de Lucas e como o teste U funciona
As sequências de Lucas U_k(P, Q) e V_k(P, Q) são as recorrências inteiras definidas por U_0 igual a zero, U_1 igual a um, V_0 igual a dois, V_1 igual a P, e o passo linear comum X_k igual a P vezes X_{k-1} menos Q vezes X_{k-2}. Seu discriminante característico é D igual a P ao quadrado menos quatro Q. Para um inteiro ímpar n maior que um coprimo com Q vezes D, seja epsilon o símbolo de Jacobi de D sobre n, que vale mais um ou menos um.
Todo primo ímpar p que satisfaz a coprimidade obedece U_{p menos epsilon} congruente a zero módulo p. Um composto ímpar positivo n que ainda satisfaz a mesma congruência chama-se pseudoprimo de Lucas com parâmetros P e Q. O caso clássico de Fibonacci usa P igual a um e Q igual a menos um, de modo que U_k é a sequência de Fibonacci e D vale cinco; o menor pseudoprimo de Fibonacci é trezentos e vinte e três.
Variantes mais fortes (Lucas extraforte, Frobenius) acrescentam condições sobre V, mas esta capacidade implementa a definição padrão só com U usada em livros e notas de pesquisa sobre pseudoprimos de Lucas de tipos especiais. Saber se um candidato é apenas um primo provável ou um verdadeiro pseudoprimo ajuda você a decidir se uma única camada de Lucas basta para o seu orçamento de risco ou se deve empilhá-la com um teste forte de base dois como em Baillie–PSW.
Perguntas frequentes
O que é um pseudoprimo de Lucas com parâmetros P e Q?
Um n composto ímpar coprimo com Q·D (D=P²−4Q) tal que U_{n−(D/n)}(P,Q) ≡ 0 (mod n), onde (D/n) é o símbolo de Jacobi. Primos que passam o mesmo teste não se chamam pseudoprimos.
Por que o verificador rejeita um discriminante quadrado perfeito?
Quando D = P² − 4Q é um quadrado perfeito não negativo, as sequências de Lucas degeneram e a congruência de primalidade deixa de ser significativa.
323 é um pseudoprimo de Lucas?
Sim. Com P igual a 1 e Q igual a −1, o caso de Fibonacci, D vale 5, o símbolo de Jacobi é −1 e U no índice 324 é divisível por 323. Como 323 é composto, é um pseudoprimo de Lucas, o menor de Fibonacci.
O que acontece se eu testar um primo de verdade, como 13?
Ele passa no teste de Lucas, mas não é marcado como pseudoprimo, porque um pseudoprimo precisa ser composto. O resultado informa separadamente se a congruência vale e se o número é composto.
Só o teste de Lucas basta para provar que um número é primo?
Não. Alguns compostos passam por uma única camada de Lucas; por isso o método Baillie–PSW o combina com um teste forte de Fermat na base 2. Esta verificação mostra se o seu candidato é um desses compostos.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"n": "323",
"P": "1",
"Q": "-1"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.lucas_pseudoprime_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
O que é um pseudoprimo de Lucas e como o teste U funciona
Quando D é um quadrado perfeito não nulo, a forma fechada no estilo Binet colapsa em uma progressão geométrica pura e as sequências perdem as propriedades aritméticas que as tornam úteis para testes de primalidade, por isso este endpoint recusa esses parâmetros com invalid_input em vez de devolver um zero sem sentido.
Contrato de entrada, campos de resposta e erros
Um primo genuíno como treze com os mesmos parâmetros passa o teste de Lucas mas não é rotulado como pseudoprimo. Envie um corpo JSON com três campos inteiros obrigatórios: n, o candidato ímpar pelo menos três; P, o primeiro parâmetro de Lucas; e Q, o segundo. Cada campo pode chegar como número JSON ou como string de inteiro decimal. Não inteiros, campos ausentes, n par e n abaixo de três falham com invalid_input indicando o problema. Em sucesso o corpo ecoa n, P, Q e D como strings decimais; jacobi é o símbolo de Jacobi de D sobre n como número no conjunto menos um, zero ou um; u_index é n menos jacobi quando o símbolo é não nulo; u_mod_n é U nesse índice reduzido módulo n; gcd_ok é verdadeiro quando n é coprimo com Q vezes D; passes_lucas_test é verdadeiro exatamente quando a congruência U vale nas condições clássicas; is_prime é um veredito determinístico Miller–Rabin no intervalo suportado; e is_lucas_pseudoprime é verdadeiro só quando n é composto, gcd_ok vale, o símbolo de Jacobi é não nulo e a congruência ainda se mantém. O campo method é sempre a string lucas_u_sequence para que clientes fixem o algoritmo nos logs. Exemplo: n igual a trezentos e vinte e três, P igual a um, Q igual a menos um produz D igual a cinco, jacobi igual a menos um, u_index igual a trezentos e vinte e quatro, u_mod_n igual a zero, is_prime falso e is_lucas_pseudoprime verdadeiro. Validação falha não é cobrada; chamadas bem-sucedidas custam o preço base publicado US$ 0,002 na rota da API.
Onde uma API de pseudoprimos de Lucas se paga
Plataformas de sala de aula e de competições precisam de um oráculo determinístico que marque corretamente pseudoprimos de Fibonacci e de Lucas gerais sem que alunos reescrevam à mão código de recorrência modular que estoura inteiros de sessenta e quatro bits. Autores de bibliotecas que entregam camadas Baillie–PSW ou só Lucas usam um verificador de referência para regredir sua escada U_k contra compostos famosos como trezentos e vinte e três antes de afirmar zero contraexemplos conhecidos. Sites de conteúdo que ranqueiam por verificador de pseudoprimo de Lucas ganham uma ferramenta ao vivo cujo caminho gratuito no navegador coincide com a automação paga no mesmo módulo puro. Material de criptografia pode demonstrar que um único teste algébrico não é certificado de primalidade mostrando um composto que ainda devolve passes_lucas_test verdadeiro enquanto is_prime é falso. Cadernos de pesquisa que varrem famílias de parâmetros em busca de novos pseudoprimos de Lucas de tipos especiais se beneficiam de uma API de parse compacta que devolve o estado intermediário completo —D, Jacobi, índice e resíduo— para filtrar e plotar sem reimplementar a reciprocidade quadrática. Como a implementação é pure parse de nível A, cada chamada bem-sucedida custa US$ 0,002 sem tokens de modelo e sem rede de saída.
Casos de integração
Exercícios de sala sobre PSP de Fibonacci e Lucas
Permita que alunos enviem n com P=1, Q=−1 (ou outros parâmetros) e verifiquem is_lucas_pseudoprime diante de listas de livro como 323.
Testes de regressão de bibliotecas de primalidade
Fixe pseudoprimos de Lucas e primos conhecidos no CI para que sua escada modular U_k nunca se desvie da congruência clássica.
Varreduras de parâmetros em pesquisa
Explore famílias de P e Q em busca de n compostos que ainda satisfaçam U_{n−ε} ≡ 0 (mod n), usando D, jacobi e u_mod_n da resposta.
Perguntas técnicas
323 é um pseudoprimo de Lucas?
Sim para os parâmetros de Fibonacci P=1, Q=−1 (D=5). É composto (17×19) e ainda assim U_{324} ≡ 0 (mod 323), de modo que is_lucas_pseudoprime é verdadeiro.
Um primo verdadeiro conta como pseudoprimo de Lucas?
Não. Primos verdadeiros que satisfazem a congruência U definem passes_lucas_test como verdadeiro e is_prime como verdadeiro, mas is_lucas_pseudoprime permanece falso por definição.
Quanto custa o verificador de pseudoprimos de Lucas?
A ferramenta do navegador é gratuita. Requisições API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.