Exponenciação modular
Eleve um número a uma potência e fique só com o resto: 2 elevado a 10 módulo 1000 dá 24, e 3 elevado a 5 módulo 13 dá 9. Cada valor aceita até 2048 algarismos e o resultado é exato. 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
- Base inteira
- 2
- Expoente inteiro não negativo
- 10
- Módulo inteiro positivo m
- 1000
- Resultado
- 24
A exponenciação modular responde com clareza a uma pergunta: quanto é a base elevada a um expoente, reduzida módulo m? Esse resto é a espinha dorsal de demos RSA de brinquedo, exemplos de sala Diffie–Hellman, tarefas de competição de programação e qualquer script que precise elevar inteiros grandes sem estourar os limites nativos.
O que a exponenciação modular calcula
Dados inteiros base, exponent e módulo m, a exponenciação modular retorna o resto único r no intervalo de 0 a m menos um tal que a base elevada ao expoente é congruente a r módulo m. Em símbolos, r ≡ base^exponent (mod m). A potenciação ingênua multiplica a base por si mesma exponent vezes e só então reduz, o que gera intermediários enormes e falha em ponto flutuante comum ou inteiros de largura fixa.
A exponenciação modular rápida em vez disso reduz após cada multiplicação e eleva ao quadrado a base em curso enquanto varre os bits do expoente do menos ao mais significativo, de modo que o trabalho escala com o comprimento em bits do expoente e não com sua magnitude decimal. Quando m vale um todo inteiro é congruente a zero, então o resultado é sempre zero.
Quando o expoente é zero o resultado é um para qualquer base desde que m seja maior que um, coincidindo com a convenção usual do produto vazio. Bases negativas são primeiro reduzidas ao sistema de resíduos não negativos módulo m para que a cadeia de multiplicações nunca misture restos com sinal. Expoentes negativos são rejeitados porque exigem inversos modulares que podem não existir e estão fora do escopo desta calculadora.
Limites, desempenho e onde se encaixa
A exponenciação modular binária realiza um número constante de multiplicações modulares por bit do expoente, de modo que dobrar o expoente quase dobra o trabalho enquanto um módulo maior encarece cada multiplicação. Professores a usam para verificar cálculos manuais de a^b mod m antes que os alunos entreguem provas.
Desenvolvedores a conectam a testes de propriedades que afirmam que protocolos permanecem em classes de resíduo, a sistemas de jogos ou ranking que dobram contadores grandes módulo um primo, e a pipelines de script que não devem reimplementar quadrado-e-multiplica em cada linguagem.
Casos de uso
Conferir respostas de competição e tarefas a^b mod m
Alunos e treinadores podem checar potências modulares sem multiplicar à mão intermediários enormes nem confiar em calculadora que perde precisão em silêncio além de 2^53.
Semear demos cripto e testes unitários de protocolos
Scripts que precisam de um passo determinístico base^exp mod m para RSA de brinquedo, Diffie–Hellman ou asserções de classes de resíduo podem chamar isto em vez de enviar a própria potenciação BigInt.
Dobrar contadores grandes em um intervalo de resíduo fixo
Jogos, sistemas de ranking e ajudas de particionamento que elevam um inteiro e depois reduzem módulo m obtêm um resto exato sem surpresas de arredondamento em ponto flutuante.
Perguntas frequentes
O que é exponenciação modular?
É calcular a base elevada a um expoente e tomar o resto módulo m, escrito base^exponent mod m. Esta calculadora retorna esse resto não negativo como result.
Por que um expoente negativo é rejeitado?
Expoentes negativos significam potências recíprocas e exigem inversos modulares, que podem não existir quando base e m não são coprimos.
Como funciona a calculadora de exponenciação modular?
Usa quadrado-e-multiplica binário sobre BigInt: para cada bit do expoente eleva ao quadrado a base em curso módulo m e multiplica no resultado quando o bit está ligado.
A calculadora de exponenciação modular é grátis?
A ferramenta do navegador é grátis e roda localmente.
Qual o tamanho máximo dos números?
A base, a potência e o módulo aceitam até 2048 algarismos cada um. Isso cobre problemas de competição, lições e muitas demonstrações de criptografia, com resultado exato e rápido.
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/modular-exponentiation \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base":"2","exponent":"10","modulus":"1000"}'const res = await fetch("https://api.kit.forhosting.com/numth/modular-exponentiation", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base": "2",
"exponent": "10",
"modulus": "1000"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/modular-exponentiation",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base": "2",
"exponent": "10",
"modulus": "1000"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/modular-exponentiation", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base":"2","exponent":"10","modulus":"1000"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base":"2","exponent":"10","modulus":"1000"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/modular-exponentiation", 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
{
"base": "2",
"exponent": "10",
"modulus": "1000"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.modular_exponentiation",
"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.
Limites
max_digits | 2048 |
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
Esta calculadora de exponenciação modular executa quadrado-e-multiplica binário sobre BigInt para que a resposta seja exata, determinística e gratuita para experimentar no seu navegador antes de chamar o mesmo núcleo pela API.
O que a exponenciação modular calcula
O módulo deve ser pelo menos um; módulos zero ou negativos não definem um resto não negativo padrão e retornam invalid_input em vez de inventar uma resposta.
Como chamar a API e ler o resultado
Envie um corpo JSON com três campos obrigatórios: base, exponent e modulus. Cada um pode ser uma string de inteiro decimal ou um número JSON; a forma string é preferida para valores maiores que o intervalo seguro de inteiros do JavaScript. Os aliases a para base, exp ou e ou power para exponent, e m ou mod para modulus são aceitos para que formulários e clientes manuais compartilhem um único contrato. Em sucesso a resposta ecoa base, exponent e modulus como strings decimais normalizadas e adiciona result como o resto não negativo de base^exponent mod modulus. Checagens clássicas: base 2, exponent 10, modulus 1000 produz result 24; base 3, exponent 5, modulus 13 produz 9; base 7, exponent 0, modulus 5 produz 1. Validação falha — campos ausentes, não inteiros, frações, modulus abaixo de um, expoente negativo, ou valor mais longo que o limite de dígitos publicado — retorna invalid_input e nunca é cobrada. O preço é um US$ 0,002 fixo por requisição bem-sucedida (item unitário com preço marginal zero).
Limites, desempenho e onde se encaixa
Esta capacidade limita base, exponent e modulus a 2048 dígitos decimais cada — o suficiente para problemas de competição, tarefas e muitas demos em escala criptográfica — mas o bastante limitado para que BigInt puro em Worker permaneça interativo sem lançar uma pilha multiprecisão pesada. Se você precisa de módulos de um milhão de dígitos, decomposições pelo teorema chinês do resto ou primitivas cripto em tempo constante, precisa de uma biblioteca dedicada; esta ferramenta leve de parse é intencionalmente a calculadora e o passo de API compartilhados para potências modulares exatas. Combine-a com ferramentas separadas de fatoração ou inversa quando um fluxo precisar do kit modular completo; este endpoint responde apenas à pergunta potenciar-e-reduzir para que a intenção de busca fique clara e a resposta seja mínima.
Perguntas técnicas
O que acontece se o módulo for menor que 1?
O módulo deve ser pelo menos 1. Módulos zero ou negativos não definem o resto não negativo padrão usado aqui e retornam invalid_input.