Pular para o conteúdo
Favoritos

Calculadora de exponenciação modular

Atualizado:

Calcula b^e mod m instantaneamente, mesmo quando a potência tem centenas de dígitos, usando o método rápido de quadrado e multiplicação. Informe uma base, um expoente não negativo e um módulo positivo e, se quiser, veja cada etapa de potenciação por quadrados sucessivos.

Calcule uma potência módulo m

Campos de entrada
b
Qualquer número inteiro, positivo ou negativo
e
Número inteiro não negativo; pode ser grande demais para que bᵉ seja calculado diretamente
m
Número inteiro positivo
Se ativado, o resultado é atualizado automaticamente quando você altera qualquer valor.

Fórmula da exponenciação modular

Fórmula
\[ c \;=\; b^e \bmod m \] \[ e = \sum_{k=0}^{n} e_k\,2^k \;\;\Longrightarrow\;\; b^e \;\equiv\; \prod_{k:\; e_k = 1} \bigl(b^{2^k} \bmod m\bigr) \pmod{m}, \qquad b^{2^k} \equiv \bigl(b^{2^{k-1}}\bigr)^2 \pmod{m} \]

Onde:

  • \(b\) — a base (qualquer número inteiro)
  • \(e\) — o expoente (um número inteiro não negativo)
  • \(m\) — o módulo (um número inteiro positivo)
  • \(e_k\) — os bits de \(e\) na sua expansão binária
  • \(c\) — o resultado: o resto da divisão de \(b^e\) por \(m\)

A primeira linha define a exponenciação modular. A segunda é a identidade do método de quadrado e multiplicação (exponenciação binária) que a calculadora usa: o expoente é decomposto em potências de dois, as potências \(b^{2^k}\) são obtidas por quadrados sucessivos e apenas aquelas correspondentes aos bits iguais a 1 são multiplicadas entre si — tudo módulo \(m\), de modo que os números intermediários nunca explodem.

Exponenciação modular – exemplo de cálculo

Exemplo: calcule \(3^{644} \bmod 645\), os valores padrão da calculadora. O número \(3^{644}\) tem 308 dígitos, então calcular a potência primeiro e reduzir depois é inviável.

Passo 1 — reduza a base: \(3 \bmod 645 = 3\).

Passo 2 — escreva o expoente em binário:

\[ 644 = 512 + 128 + 4 = 1010000100_2 \]

A potenciação por quadrados sucessivos módulo 645 dá \(3^4 \equiv 81\), \(3^{128} \equiv 396\) e \(3^{512} \equiv 111 \pmod{645}\) para os bits iguais a 1.

Passo 3 — multiplique esses valores, reduzindo módulo 645 a cada vez:

\[ 3^{644} \equiv 81 \times 396 \times 111 \equiv 471 \times 111 \equiv 52281 \equiv 36 \pmod{645} \]

Resultado: \(3^{644} \bmod 645 = 36\). O algoritmo precisou de apenas 9 quadrados e 3 multiplicações — 12 operações modulares em vez das 643 que uma abordagem ingênua exigiria.

Como usar a calculadora

  1. Digite a Base (b) — qualquer número inteiro, positivo ou negativo.
  2. Digite o Expoente (e) — um número inteiro não negativo. Ele pode ser grande demais para que \(b^e\) seja calculado diretamente; é exatamente para isso que esta ferramenta existe.
  3. Digite o Módulo (m) — qualquer número inteiro positivo.
  4. Deixe a opção Mostrar etapas de quadrados sucessivos marcada se você quiser ver a expansão binária do expoente e uma tabela com cada etapa de quadrado; desmarque-a para obter apenas a resposta.
  5. Leia o Resultado (bᵉ mod m), a Base reduzida (b mod m) e a explicação passo a passo.

O que é exponenciação modular?

A exponenciação modular responde à pergunta: qual é o resto da divisão de \(b^e\) por \(m\)? O resultado está sempre entre \(0\) e \(m-1\). De modo equivalente, é o número \(c\) com \(0 \le c < m\) tal que \(b^e \equiv c \pmod{m}\). Por exemplo, \(3^{644} \bmod 645 = 36\) significa que \(3^{644}\) deixa resto 36 ao ser dividido por 645.

O caminho ingênuo — calcular \(b^e\) e depois tirar o resto — falha rapidamente. \(3^{644}\) já tem 308 dígitos, e as aplicações criptográficas usam rotineiramente expoentes com centenas de dígitos, caso em que \(b^e\) teria mais dígitos do que há átomos no universo. A solução é o método de quadrado e multiplicação: escreva o expoente em binário, obtenha \(b^{2^k} \bmod m\) elevando ao quadrado e reduzindo repetidamente, e depois multiplique apenas os valores correspondentes aos bits iguais a 1. Isso exige apenas \(O(\log e)\) multiplicações modulares em vez de \(e-1\) e, como todo resultado intermediário é reduzido módulo \(m\), nenhum número cresce além de aproximadamente \(m^2\).

A exponenciação modular é o cavalo de batalha da criptografia de chave pública. A criptografia e a descriptografia no RSA são, cada uma, uma única exponenciação modular com um módulo gigantesco; a troca de chaves de Diffie–Hellman e o esquema ElGamal também dependem dela. Ela ainda alimenta testes de primalidade como os de Fermat e Miller–Rabin, que verificam se \(a^{n-1} \equiv 1 \pmod n\) — você pode explorar a teoria dos números por trás disso com nossas calculadoras de Pequeno Teorema de Fermat e Teorema de Euler.

A exibição das etapas torna o algoritmo transparente: a tabela lista cada posição de bit \(k\) do expoente ao lado de \(b^{2^k} \bmod m\), as linhas em negrito são as efetivamente usadas, e o produto delas (reduzido módulo \(m\)) é a sua resposta. É exatamente isso que os sistemas de álgebra computacional fazem internamente, e ver isso uma vez é a melhor forma de entender por que expoentes enormes são baratos.

Premissas, limites e dicas

  • O expoente deve ser não negativo. Um expoente negativo exigiria o inverso modular de \(b\), que só existe quando \(\gcd(b, m) = 1\). Para tratar esse caso, primeiro encontre o inverso com nossa calculadora de Inverso Multiplicativo Modular e depois use o resultado como base com um expoente positivo.
  • O módulo deve ser positivo. Se \(m = 1\), todo número inteiro é congruente a 0, então o resultado é 0 — isso é matematicamente correto, não um erro.
  • Bases negativas funcionam normalmente. A base é primeiro reduzida ao seu menor resíduo não negativo \(b \bmod m\), de modo que \(-12\) e \(m - 12\) dão a mesma resposta.
  • Expoente 0 resulta em \(1 \bmod m\) (que só é 0 quando \(m = 1\)), em coerência com \(b^0 = 1\).
  • Limites de tamanho: a base e o módulo podem ter até 1000 dígitos cada, e o expoente pode chegar a \(10^{18}\). Como o algoritmo é logarítmico no expoente, até esse valor roda instantaneamente.
  • Confira a resposta por outro caminho: para um módulo composto, você pode dividir o cálculo em partes de potências de primos e combiná-las de novo — experimente nossa calculadora do Teorema Chinês do Resto para verificar os resultados de forma independente.

Perguntas frequentes

Como calcular uma potência módulo m à mão?

Use o método de quadrado e multiplicação. Primeiro reduza a base: substitua b por \(b \bmod m\). Em seguida, escreva o expoente em binário e vá elevando a base ao quadrado repetidamente, reduzindo módulo m a cada passo: \(b^2, b^4, b^8, b^{16}, \ldots\). Por fim, multiplique apenas os valores quadrados que correspondem aos bits iguais a 1 do expoente, reduzindo módulo m a cada multiplicação. Assim, todo número intermediário fica abaixo de \(m^2\).

Por que o resultado de b^e mod m está sempre entre 0 e m-1?

Porque a aritmética modular trabalha com os menores resíduos não negativos. A expressão \(b^e \bmod m\) é definida como o resto da divisão de \(b^e\) por \(m\), e os restos da divisão sempre satisfazem \(0 \le c \le m-1\). Mesmo que a base seja negativa, ela é primeiro convertida no resíduo positivo equivalente, então a resposta nunca é negativa.

Qual é o último dígito de uma potência grande (como 7^100)?

Isso é uma exponenciação modular disfarçada: o último dígito de um número é esse número módulo 10. Portanto, calcule \(7^{100} \bmod 10\) aqui. Da mesma forma, os dois últimos dígitos são o valor módulo 100, e os três últimos são o valor módulo 1000. É um atalho clássico para problemas de olimpíadas e de dever de casa sobre dígitos finais.

O que acontece se o expoente for 0 ou o módulo for 1?

Com \(e = 0\), o resultado é \(1 \bmod m\), que é igual a 1 para todo módulo, exceto \(m = 1\), caso em que é 0 — pois todo número inteiro é congruente a 0 módulo 1. Esses casos-limite são tratados corretamente, e \(m = 1\) sempre retorna 0 para qualquer base e expoente, o que é matematicamente certo, e não um erro.

Posso usar base ou expoente negativo?

Bases negativas funcionam normalmente: a calculadora as reduz primeiro a um resíduo positivo equivalente, então \(-12\) se comporta como \(m - 12\). Expoentes negativos não são aceitos, pois exigiriam o inverso modular da base, que só existe quando \(\gcd(b, m) = 1\). Para contornar isso, encontre primeiro \(b^{-1} \bmod m\) e depois eleve esse valor à potência \(|e|\).

Como a exponenciação modular é usada no RSA e na criptografia?

A criptografia e a descriptografia no RSA são, cada uma, uma única exponenciação modular \(c = m^e \bmod n\) com um módulo de 2048 bits ou mais — exatamente o que o método de quadrado e multiplicação calcula de forma eficiente. A troca de chaves de Diffie–Hellman e o ElGamal funcionam do mesmo jeito. A velocidade \(O(\log e)\) do método torna viáveis expoentes enormes, enquanto a dificuldade de reverter a operação sem a chave secreta mantém esses esquemas seguros.

Qual é um erro comum ao calcular b^e mod m?

O erro mais comum é calcular \(b^e\) primeiro e tirar o resto depois — a potência rapidamente fica astronomicamente grande e estoura a calculadora ou se torna impossível de escrever. Em vez disso, reduza módulo m após cada quadrado e cada multiplicação. Outro deslize frequente é esquecer que \(b^0 \bmod 1 = 0\), e não 1, porque tudo é congruente a 0 módulo 1.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *