Pequeno teorema de Fermat
Informe uma base e um módulo e veja se a^(n−1) mod n dá 1: com 2 e 7, o resto de 2^6 é 1; com 2 e 15, é 4. Serve para conferir tarefas ou achar um contraexemplo composto. 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
- A
- 2
- N
- 7
- Resultado
- 1
- Primeiro texto
- 2
- N
- 7
- Expoente
- 6
O pequeno teorema de Fermat é a afirmação limpa da aritmética modular: se n é primo e a base a não é divisível por n, então a elevado a n menos um é congruente a um módulo n. Alunos, tutores e desenvolvedores precisam avaliar com rapidez esse resíduo exato de potência—não um resumo da demonstração—para conferir tarefas, testar contraexemplos compostos ou validar rotinas modulares. Este verificador do pequeno teorema de Fermat recebe os inteiros a e n, recusa o par quando gcd(a, n) não é um e, caso contrário, devolve a^(n−1) mod n com um indicador booleano que informa se o resto é um.
O que o pequeno teorema de Fermat afirma e o que esta ferramenta calcula
Na forma usual de livro didático, o pequeno teorema de Fermat diz: se n é um número primo e a é um inteiro não divisível por n, então a elevado a n menos um é congruente a um módulo n. Escrito com o operador modular que programadores usam todos os dias, isso é a^(n−1) mod n igual a 1 sempre que essas hipóteses valem. Você fornece a base a e o módulo n.
O verificador exige primeiro que n seja um inteiro no mínimo dois, porque a redução modular com módulo abaixo de dois não é um contrato útil em sala. Em seguida exige que o máximo divisor comum de a e n seja um—a hipótese de coprimalidade que coincide com o enunciado clássico quando n é primo (a não divisível por n) e ainda faz sentido com n composto quando você deseja explorar o que ocorre fora da garantia do teorema.
Quando ambas as verificações passam, o motor executa exponenciação modular binária (elevar ao quadrado e multiplicar) sobre BigInt para que produtos intermediários permaneçam exatos mesmo com expoente n−1 grande.
Para aulas, tarefas e contraexemplos compostos
Professores usam um verificador do pequeno teorema de Fermat para que alunos confirmem cálculos manuais de a^(p−1) mod p com primos pequenos antes de escrever uma demonstração, e para que testem de propósito n compostos e vejam que o resto nem sempre é um. Geradores de prova e plugins de LMS precisam de um oráculo determinístico que rejeite entradas não coprimas em vez de devolver em silêncio um resto que confunda o corretor.
Cadernos de cursos de criptografia frequentemente precisam de um único passo exato de potência modular ao introduzir chaves RSA de brinquedo ou ilustrar por que o expoente n−1 aparece na teoria elementar dos números antes de o teorema de Euler generalizar a história com φ(n).
Quando mais tarde precisar do teorema de Euler com φ(n), inversas modulares ou decomposições pelo teorema chinês do resto, chame essas capacidades separadas; esta permanece a landing dedicada a Fermat a^(n−1) mod n para que a intenção de busca e a forma da resposta continuem claras.
Casos de uso
Checagens FLT de tarefa e sala de aula
Alunos informam a base a e um primo n para confirmar que a^(n−1) mod n vale 1, ou testam n compostos para ver quando o resto não é 1.
Testes unitários de potência modular
Scripts fixam resíduos conhecidos como 2^6 mod 7 = 1 e 2^14 mod 15 = 4 sem reimplementar BigInt square-and-multiply em cada linguagem.
Perguntas frequentes
Por que gcd(a, n) precisa ser igual a 1?
O pequeno teorema de Fermat é enunciado para bases coprimas ao módulo (equivalente a não divisíveis pelo primo n).
Um resultado 1 prova que n é primo?
Não. Quando n é primo e gcd(a,n)=1 o resto é sempre 1, mas compostos também podem dar 1 para algumas bases. Use uma ferramenta dedicada de primalidade para essa pergunta.
Como verifico o pequeno teorema de Fermat com base 2 e módulo 7?
Digite 2 como base e 7 como módulo. A ferramenta eleva 2 à sexta potência, divide por 7 e devolve resto 1: o teorema vale para esse primo, como esperado.
Por que 2^14 mod 15 dá 4 e não 1?
Porque 15 não é primo, e nesse caso o teorema não garante nada. A base 2 não tem divisor comum com 15, então a ferramenta calcula o resto de 2 elevado a 14 e obtém 4: o 15 não passa no teste.
Posso usar uma base negativa ou um módulo muito grande?
Sim. Uma base negativa é reduzida primeiro módulo n, e o módulo só precisa ser um inteiro de pelo menos 2. A potência é calculada elevando ao quadrado e multiplicando com números inteiros exatos, então mesmo expoentes enormes dão um resto exato.
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/fermat-little-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":2,"n":7}'const res = await fetch("https://api.kit.forhosting.com/numth/fermat-little-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 2,
"n": 7
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/fermat-little-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 2,
"n": 7
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/fermat-little-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":2,"n":7}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":2,"n":7}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/fermat-little-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
{
"a": 2,
"n": 7
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.fermat_little_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
A mesma lógica pura BigInt alimenta a ferramenta gratuita do navegador e o caminho pago da API a US$ 0,002 por requisição bem-sucedida, de modo que demos de sala e scripts de produção nunca discordem sobre um resíduo.
O que o pequeno teorema de Fermat afirma e o que esta ferramenta calcula
A demonstração não é o produto deste endpoint; o produto é o resto exato dessa potência. A resposta ecoa a e n como strings decimais, informa o expoente n−1, o resto não negativo result, gcd como a string "1", um booleano congruent_to_one verdadeiro exatamente quando result vale 1, e uma expressão curta que você pode imprimir ao lado da resposta. Checagem clássica com primo: a igual a 2 e n igual a 7 produz 2^6 mod 7 igual a 1, logo congruent_to_one é verdadeiro. Sonda clássica com composto: a igual a 2 e n igual a 15 produz 2^14 mod 15 igual a 4, logo congruent_to_one é falso—exatamente o tipo de contraexemplo que mostra que a^(n−1) ≡ 1 não é, por si só, um certificado de primalidade.
Contrato de entrada, erros e como ler a resposta
Se n for menor que dois, a tarefa falha com mensagem de que o módulo deve ser pelo menos dois. Se gcd(a, n) não for um, a tarefa falha com mensagem que nomeia o gcd—por exemplo gcd(2, 4) igual a 2—para que quem chama saiba que o par está fora da hipótese de coprimalidade em vez de adivinhar por que a potência não foi calculada. Bases negativas são aceitas e reduzidas ao sistema de resíduos não negativos módulo n antes da potenciação, o que coincide com a aritmética modular padrão. Envie um corpo JSON com POST e dois campos inteiros obrigatórios: a (alias base) e n (alias modulus, mod). Cada campo pode ser um número JSON ou uma string de inteiro decimal; a forma string é preferida quando os valores saem da faixa de inteiros seguros do JavaScript. Frações, strings vazias, tokens não numéricos e valores com mais de sessenta e quatro dígitos decimais falham com invalid_input e nunca são cobrados. Em caso de sucesso, todo campo numérico do corpo é string decimal exceto congruent_to_one, que é booleano, de modo que inteiros grandes vão e voltam por JSON sem perda de precisão. Combine este verificador com uma ferramenta separada de fatoração ou primalidade quando o fluxo precisar de mais do que o resíduo de potência; este endpoint responde apenas a^(n−1) mod n sob o portão de coprimalidade para manter a intenção de SEO focada e a resposta mínima. O preço é um US$ 0,002 fixo por requisição bem-sucedida na unidade item; validação falha não consome saldo pré-pago.
Demos de sala, sondas com compostos e automação via API
Desenvolvedores ligam a API a testes de propriedade que afirmam a^(n−1) ≡ 1 para bases aleatórias coprimas a um módulo primo conhecido, ou a suítes de regressão que fixam contraexemplos compostos conhecidos como 2^14 mod 15 igual a 4. Mantenha a e n dentro do limite de dígitos publicado, fixe nos testes o result em forma de string e o indicador congruent_to_one, e obtenha resíduos reproduzíveis para tarefas, plataformas de tutoria e edge workers sem montar um sistema completo de álgebra computacional.
Casos de integração
Oráculos de correção automática em LMS e provas
Avalie itens de aritmética modular com resto determinístico e rejeite pares não coprimos como inválidos em vez de inventar um payload de sucesso.
Perguntas técnicas
O que este verificador do pequeno teorema de Fermat calcula?
Dados inteiros a e n com n ≥ 2 e gcd(a,n)=1, devolve a^(n−1) mod n e se esse resto vale 1 (congruent_to_one).
O que acontece se n for composto?
O verificador ainda calcula a^(n−1) mod n quando gcd(a,n)=1. congruent_to_one pode ser verdadeiro ou falso; casos falsos são contraexemplos úteis em sala.
Quanto custa o verificador do pequeno teorema de Fermat?
A ferramenta do navegador é gratuita. Requisições à API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida nunca é cobrada.