ForHosting KIT · Ferramentas para dev

Verificador de pseudoprimos de Fermat para qualquer base

O verificador de pseudoprimos de Fermat recebe um inteiro composto n e uma base a, calcula exatamente o resto de a elevado a n menos um módulo n e informa se esse resto é um.

● BetaGrátis · no seu navegador
Use pelo WebAPIE-mailTelegramApp em breve

Um composto aprovado é pseudoprimo de Fermat para a base escolhida: ele se comporta como primo nesse teste específico, embora não seja primo. O resultado também apresenta o máximo divisor comum, facilitando sua análise e explicação.

O que um resultado positivo realmente significa

O pequeno teorema de Fermat afirma que, se n é primo e a não é divisível por n, então a elevado a n menos um deixa resto um módulo n. A recíproca não é garantida. Alguns inteiros compostos também produzem resto um para determinadas bases; eles são chamados de pseudoprimos de Fermat nessas bases. Este verificador exige que n seja composto, confirma primeiro essa condição e depois avalia a congruência com exatidão. Quando passes_fermat_test e is_fermat_pseudoprime são verdadeiros, isso significa que o composto informado enganou o teste de Fermat para aquela base específica. Não significa que n seja primo, provavelmente primo ou pseudoprimo em todas as bases. A base faz parte da afirmação e deve sempre acompanhar o resultado. O resto retornado fornece a evidência aritmética direta: um representa aprovação e qualquer outro valor representa reprovação. O máximo divisor comum também é exibido porque um divisor não trivial explica muitas falhas e ajuda você a distinguir experiências com bases coprimas de entradas que já revelam uma relação de fatores.

Como o cálculo permanece exato

As duas entradas são strings decimais para que inteiros acima do intervalo numérico seguro do JavaScript não sejam arredondados antes do cálculo. O intervalo aceito termina no maior inteiro sem sinal de 64 bits, estabelecendo um limite claro e verificável para o teste de primalidade. Antes do teste de Fermat, o verificador usa Miller–Rabin determinístico com um conjunto de testemunhas suficiente para todo esse intervalo. Se um primo for detectado, ocorre um erro de entrada, pois números primos satisfazem o teorema, mas não podem ser pseudoprimos por definição. Para um composto válido, a exponenciação modular usa quadrados sucessivos em vez de construir o enorme valor a^(n-1). Cada multiplicação é reduzida módulo n, mantendo os valores intermediários limitados e exatos com BigInt. O algoritmo de Euclides calcula gcd(a,n) separadamente. A base precisa satisfazer 2 <= a <= n - 2. Nenhuma testemunha aleatória, data, chamada de rede ou operação de ponto flutuante interfere na resposta, portanto entradas idênticas sempre geram saídas idênticas.

Uso em estudos e fluxos de verificação

Um exemplo clássico usa n = 341 e a base a = 2. Como 341 é composto, mas 2^340 é congruente a um módulo 341, ele passa e é pseudoprimo de Fermat na base dois. Ao mudar a base, o mesmo composto pode falhar, razão pela qual um único teste de Fermat não é um certificado geral de primalidade. Em uma aula, a saída estruturada permite ligar diretamente a definição ao resto calculado. Em testes de software, você pode guardar vetores conhecidos de pseudoprimos e não pseudoprimos sem depender de uma biblioteca matemática ou de conversões numéricas específicas da máquina. Para explorar, compare várias bases permitidas mantendo n fixo e observe a importância da escolha da testemunha. Trate um resultado verdadeiro como demonstração da limitação do teste de Fermat, não como permissão para aceitar o número como primo em código criptográfico ou sensível à segurança. A API custa US$ 0,002 por par verificado, enquanto a versão no navegador executa localmente o mesmo cálculo determinístico.

Demonstrar um pseudoprimo clássico

Verifique que um composto conhecido como 341 passa na congruência de Fermat na base 2 e examine o resto exato.

Criar exercícios de teoria dos números

Confira gabaritos de questões que perguntam se certo composto é pseudoprimo em uma base especificada.

Testar implementações aritméticas

Use resultados estruturados e determinísticos como vetores de referência para exponenciação modular ou código didático de primalidade.

Quando n é pseudoprimo de Fermat na base a?

Ele deve ser composto e satisfazer a congruência a^(n-1) igual a 1 módulo n para a base informada.

Por que o verificador rejeita n primo?

Primos normalmente passam na congruência de Fermat, mas pseudoprimo é um termo reservado a inteiros compostos; aceitar um primo responderia outra pergunta.

Um resultado verdadeiro prova que n é primo?

Não. O verificador já estabelece que n é composto. O resultado verdadeiro mostra exatamente como esse composto engana o teste em uma base.

Por que n e a são informados como strings?

Strings decimais preservam todos os dígitos na API e no navegador, inclusive acima do intervalo seguro dos números comuns do JavaScript.

Qual é o preço?

A API custa US$ 0,002 por par verificado. O executor no navegador realiza localmente o mesmo cálculo.

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.

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

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

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"
  }
}

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.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

max_digits20
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Ver a documentação completa do KIT →