Skip to main content
🔬 Advanced ✨ New

Modulo Calculator

Calcule o resto de uma operação de divisão. Encontre a mod b instantaneamente com explicação passo a passo. Ferramenta matemática grátis com resultados precisos.

<section class="content-section">
    <h2>O Que É a Operação Módulo?</h2>
    <p>A operação módulo (mod, ou %) retorna o resto após dividir um número por outro. Para a mod b: divida a por b, e o resultado é o resto. Por exemplo, 17 mod 5 = 2 (porque 17 = 3×5 + 2). O resultado está sempre no intervalo [0, b-1] para valores positivos.</p>
    <p>A relação fundamental: <strong>a = q×b + r</strong>, onde q é o quociente (floor(a/b)) e r é o resto (0 ≤ r &lt; b). Módulo é a operação complementar à divisão inteira — se a ÷ b = q com resto r, então a mod b = r. Esta calculadora usa a definição matemática verdadeira de módulo (sempre não negativo para divisor positivo), em vez do resto assinado usado por algumas linguagens de programação.</p>
    <p>A aritmética modular — aritmética com um módulo fixo onde os números "dão a volta" — forma a base da aritmética do relógio. As horas em um relógio são calculadas mod 12 ou mod 24. Se são 10 AM e você adiciona 5 horas: (10 + 5) mod 12 = 3 (PM). Esse comportamento de dar a volta é central para inúmeros algoritmos em ciência da computação, criptografia e teoria dos números.</p>
  </section>

  <section class="content-section">
    <h2>Exemplos de Módulo e Soluções Passo a Passo</h2>
    <p>Entender módulo se torna intuitivo com exemplos trabalhados. Para cada cálculo abaixo, a fórmula é: resto = a − floor(a ÷ b) × b.</p>
    <table>
      <thead><tr><th>Expressão</th><th>Quociente (floor)</th><th>Resto (a mod b)</th><th>Verificação</th></tr></thead>
      <tbody>
        <tr><td>17 mod 5</td><td>3</td><td>2</td><td>3×5 + 2 = 17 ✓</td></tr>
        <tr><td>20 mod 4</td><td>5</td><td>0</td><td>5×4 + 0 = 20 ✓</td></tr>
        <tr><td>7 mod 3</td><td>2</td><td>1</td><td>2×3 + 1 = 7 ✓</td></tr>
        <tr><td>100 mod 7</td><td>14</td><td>2</td><td>14×7 + 2 = 100 ✓</td></tr>
        <tr><td>13 mod 13</td><td>1</td><td>0</td><td>1×13 + 0 = 13 ✓</td></tr>
        <tr><td>1 mod 5</td><td>0</td><td>1</td><td>0×5 + 1 = 1 ✓</td></tr>
        <tr><td>256 mod 16</td><td>16</td><td>0</td><td>16×16 + 0 = 256 ✓</td></tr>
        <tr><td>365 mod 7</td><td>52</td><td>1</td><td>52×7 + 1 = 365 ✓</td></tr>
      </tbody>
    </table>
    <p>Observe que 365 mod 7 = 1: isso nos diz que um ano não bissexto tem 52 semanas completas mais 1 dia extra, o que é por isso que o dia da semana muda em 1 a cada ano não bissexto. Um ano bissexto (366 dias) mod 7 = 2, mudando o dia em 2.</p>
  </section>

  <section class="content-section">
    <h2>Aplicações da Aritmética Modular</h2>
    <p>O módulo aparece em toda a programação e matemática. <strong>Verificação par/ímpar:</strong> se n % 2 == 0, n é par. <strong>Arrays circulares e buffers circulares:</strong> índice = (índice_atual + 1) % tamanho_array volta ao início. <strong>Tabelas de hash:</strong> bucket = hash(chave) % num_buckets mapeia qualquer valor de hash para um índice de bucket válido, garantindo que não haja acesso fora dos limites.</p>
    <p>Em <strong>cálculos de calendário</strong>, a aritmética do dia da semana usa mod 7. A fórmula de Zeller e o algoritmo Doomsday ambos dependem da aritmética modular para determinar o dia da semana para qualquer data. Isso funciona porque há exatamente 7 dias em uma semana — um módulo fixo. Os offsets de fuso horário usam mod 24 para ajustar corretamente os valores das horas através dos limites da meia-noite.</p>
    <p>Em <strong>sistemas digitais</strong>, o módulo é usado em todos os lugares onde endereços de memória estão envolvidos. Entradas de tabela de páginas, seleção de conjuntos de cache e E/S mapeada em memória todos dependem de indexação modular. Conjuntos de instruções de CPU tipicamente incluem uma instrução de resto (semelhante ao módulo) junto com a divisão, e instruções de vetor SIMD usam módulo para envolvimento de lanes em embaralhamentos.</p>
    <p>Em <strong>detecção de erros</strong>, verificações de redundância cíclica (CRCs) e checksums são calculados usando aritmética modular polinomial sobre GF(2). Números de cartão de crédito passam pelo algoritmo de Luhn (uma verificação de módulo 10). Números de livros ISBN-10 usam mod 11. Esses checksums detectam erros de transposição e de dígito único em códigos numéricos.</p>
  </section>

  <section class="content-section">
    <h2>Módulo na Criptografia</h2>
    <p>A aritmética modular é a base matemática da criptografia moderna de chave pública. Os três algoritmos criptográficos mais importantes — RSA, Diffie-Hellman e Criptografia de Curva Elíptica — todos dependem de operações realizadas módulo um número primo ou composto grande.</p>
    <p><strong>Criptografia RSA</strong> usa exponenciação modular: para criptografar uma mensagem M com chave pública (e, n), compute C = M^e mod n. Para descriptografar, compute M = C^d mod n onde d é a chave privada. A segurança depende da dificuldade de fatorar n (um grande semiprimo) — sabendo apenas n, recuperar p e q é computacionalmente inviável para tamanhos de chave acima de 2048 bits.</p>
    <p><strong>Troca de chaves Diffie-Hellman</strong> permite que duas partes estabeleçam um segredo compartilhado sobre um canal inseguro: Alice envia A = g^a mod p, Bob envia B = g^b mod p. Cada parte calcula o segredo compartilhado: Alice calcula B^a mod p = g^(ab) mod p, Bob calcula A^b mod p = g^(ab) mod p. Um interceptador que intercepte g^a mod p e g^b mod p não pode recuperar g^(ab) mod p sem resolver o problema do logaritmo discreto.</p>
    <p>A segurança desses sistemas depende da natureza unidirecional da exponenciação modular: calcular g^a mod p é rápido (usando quadrados repetidos, O(log a) multiplicações), mas revertê-lo — encontrar um dado g^a mod p — acredita-se exigir tempo exponencial para grandes primos p.</p>
  </section>

  <section class="content-section">
    <h2>Módulo com Números Negativos e Casos Limite</h2>
    <p>O comportamento do módulo com números negativos varia conforme a linguagem de programação, o que causa muitos bugs difíceis de encontrar. Entender a diferença é crítico para desenvolvedores de software.</p>
    <table>
      <thead><tr><th>Linguagem</th><th>-7 % 3</th><th>7 % -3</th><th>Definição</th></tr></thead>
      <tbody>
        <tr><td>Python</td><td>2</td><td>-2</td><td>O sinal segue o divisor (módulo verdadeiro)</td></tr>
        <tr><td>JavaScript</td><td>-1</td><td>1</td><td>O sinal segue o dividendo (resto)</td></tr>
        <tr><td>C / C++</td><td>-1</td><td>1</td><td>O sinal segue o dividendo (C99+)</td></tr>
        <tr><td>Java</td><td>-1</td><td>1</td><td>O sinal segue o dividendo</td></tr>
        <tr><td>Ruby</td><td>2</td><td>-2</td><td>O sinal segue o divisor (módulo verdadeiro)</td></tr>
        <tr><td>Matemática (definição)</td><td>2</td><td>1 (ou indefinido)</td><td>Sempre não negativo para divisor positivo</td></tr>
      </tbody>
    </table>
    <p>Em matemática, o módulo sempre retorna um resultado não negativo: -7 mod 3 = 2 (já que -7 = -3×3 + 2, e 0 ≤ 2 &lt; 3). Esta calculadora usa a definição matemática.</p>
    <p>A maneira segura de garantir um resultado não negativo em qualquer linguagem: <code>((a % b) + b) % b</code>. Isso lida corretamente com entradas negativas e é usado internamente por nossa calculadora. Este padrão é essencial ao usar módulo para indexação de arrays ou cálculos de dias de calendário onde resultados negativos causariam erros.</p>
    <p><strong>Casos limite para lembrar:</strong> (1) Qualquer número mod 1 = 0 — dividir por 1 não deixa resto. (2) Qualquer número mod ele mesmo = 0. (3) 0 mod qualquer número não zero = 0. (4) Divisão (e módulo) por zero é indefinida — sempre valide o divisor antes de calcular o módulo. Nossa calculadora exibe uma mensagem de erro clara para módulo por zero.</p>
  </section>

  <section class="content-section">
    <h2>Módulo e Testes de Divisibilidade</h2>
    <p>Um dos usos mais práticos do módulo é testar divisibilidade sem realizar a divisão completa. Um número a é divisível por b se e somente se a mod b = 0. Isso permite verificações rápidas de divisibilidade:</p>
    <table>
      <thead><tr><th>Divisibilidade por</th><th>Teste</th><th>Exemplo</th></tr></thead>
      <tbody>
        <tr><td>2</td><td>n mod 2 = 0 (último dígito par)</td><td>128 mod 2 = 0 ✓</td></tr>
        <tr><td>3</td><td>Soma dos dígitos mod 3 = 0</td><td>123: 1+2+3=6, 6 mod 3 = 0 ✓</td></tr>
        <tr><td>4</td><td>Últimos dois dígitos mod 4 = 0</td><td>312: 12 mod 4 = 0 ✓</td></tr>
        <tr><td>5</td><td>Último dígito é 0 ou 5</td><td>735 mod 5 = 0 ✓</td></tr>
        <tr><td>9</td><td>Soma dos dígitos mod 9 = 0</td><td>369: 3+6+9=18, 18 mod 9 = 0 ✓</td></tr>
        <tr><td>10</td><td>n mod 10 = 0 (último dígito é 0)</td><td>500 mod 10 = 0 ✓</td></tr>
      </tbody>
    </table>
    <p>Essas regras de divisibilidade são atalhos derivados das propriedades da aritmética modular. As regras da soma dos dígitos para 3 e 9 funcionam porque 10 ≡ 1 (mod 3) e 10 ≡ 1 (mod 9), significando que o valor posicional de cada dígito é irrelevante para a divisibilidade por 3 ou 9. Estas são ensinadas na escola primária sem o contexto da aritmética modular, mas o mecanismo subjacente é o módulo.</p>
  </section>

  <section class="content-section">
    <h2>Exponenciação Modular: Potência Rápida Mod</h2>
    <p>Calcular a^b mod n diretamente primeiro calculando a^b, depois tomando mod n, é impraticável para expoentes grandes — a^100 pode ter milhares de dígitos. A exponenciação modular usa a identidade (a×b) mod n = ((a mod n) × (b mod n)) mod n para manter os resultados intermediários pequenos.</p>
    <p>O algoritmo rápido usa quadrados repetidos (exponenciação binária):</p>
    <ul>
      <li>Escreva b em binário: por exemplo, b=13 = 1101₂</li>
      <li>Calcule a, a², a⁴, a⁸ cada um tomado mod n</li>
      <li>Multiplique as potências correspondentes aos bits 1: a¹³ = a⁸ × a⁴ × a¹ (mod n)</li>
    </ul>
    <p>Isso reduz o número de multiplicações de b para O(log₂ b). Para expoentes RSA de 2048 bits (~10^600), isso é a diferença entre trilhões de multiplicações e apenas ~2000. Sem essa otimização, a criptografia RSA seria completamente impraticável.</p>
  </section>

  <section class="content-section faq-section">
    <h2>Perguntas Frequentes</h2>
    <details>
      <summary>O que é 15 mod 4?</summary>
      <p>15 mod 4 = 3. Porque 15 = 3×4 + 3, o resto é 3. Verifique: 3×4 = 12, e 15 − 12 = 3. ✓</p>
    </details>
    <details>
      <summary>O que significa mod 0?</summary>
      <p>Módulo por zero é indefinido, assim como divisão por zero. Você não pode calcular a mod 0. Nossa calculadora retorna uma mensagem de erro nesse caso. Qualquer operação baseada em divisão requer um divisor não zero.</p>
    </details>
    <details>
      <summary>Como o módulo se relaciona com a divisibilidade?</summary>
      <p>Um número a é divisível por b se e somente se a mod b = 0. Por exemplo, 24 mod 6 = 0, então 24 é divisível por 6. 25 mod 6 = 1, então 25 não é divisível por 6. Isso torna o módulo a ferramenta fundamental para testes de divisibilidade em ciência da computação.</p>
    </details>
    <details>
      <summary>Qual é a diferença entre mod e resto?</summary>
      <p>Para números positivos, mod e resto são idênticos. Para números negativos, eles diferem: o módulo matemático sempre retorna um resultado não negativo (o sinal segue o divisor), enquanto o resto toma o sinal do dividendo. Por exemplo, -7 mod 3 = 2 (matemática), mas -7 resto 3 = -1 (como em C, Java, JavaScript).</p>
    </details>
    <details>
      <summary>O que é 10 mod 3?</summary>
      <p>10 mod 3 = 1. Porque 10 = 3×3 + 1, o resto é 1. Você pode verificar: 3×3 = 9, e 10 − 9 = 1. Isso significa que 10 deixa um resto de 1 quando dividido por 3, então 10 não é divisível por 3.</p>
    </details>
    <details>
      <summary>O que é 0 mod 5?</summary>
      <p>0 mod 5 = 0. Zero dividido por qualquer número não zero dá quociente 0 e resto 0. Em geral, 0 mod n = 0 para qualquer n ≠ 0. Isso é consistente com a definição: 0 = 0×5 + 0.</p>
    </details>
    <details>
      <summary>Como o módulo é usado na programação?</summary>
      <p>Usos comuns na programação incluem: verificar par/ímpar (n%2==0), envolver índices de array (índice%tamanho), implementar buffers circulares, distribuir itens em buckets em tabelas de hash (hash%tamanho), girar através de estados em uma máquina de estados, e garantir que eventos periódicos ocorram a cada n-ésima iteração (contador%n==0).</p>
    </details>
    <details>
      <summary>O que é aritmética do relógio?</summary>
      <p>A aritmética do relógio é a aritmética modular do dia a dia. Um relógio de 12 horas usa mod 12: 11 horas + 3 horas = (11+3) mod 12 = 2 horas. Esse comportamento de dar a volta é precisamente a aritmética modular. Da mesma forma, os dias da semana usam mod 7, e o horário militar usa mod 24 para horas.</p>
    </details>
    <details>
      <summary>Por que o módulo é importante na criptografia?</summary>
      <p>A aritmética modular torna possíveis funções unidirecionais. Calcular g^a mod p (dado g, a, p) é rápido, mas encontrar um dado g^a mod p e p (o problema do logaritmo discreto) é computacionalmente inviável para grandes primos. Essa assimetria sustenta a troca de chaves Diffie-Hellman, RSA, e a maior parte da criptografia de chave pública que protege as comunicações na internet.</p>
    </details>
    <details>
      <summary>Qual é o resultado de qualquer número mod 1?</summary>
      <p>Qualquer inteiro mod 1 = 0. Dividir por 1 sempre deixa nenhum resto — todo inteiro é perfeitamente divisível por 1. Isso é matematicamente consistente: a = a×1 + 0, então o resto é sempre 0. Este caso limite é importante para lidar em implementações de aritmética modular.</p>
    </details>
  </section>

  <section class="content-section">
    <h2>Módulo na Vida Cotidiana: Exemplos Práticos</h2>
    <p>A aritmética modular aparece com muito mais frequência na vida diária do que a maioria das pessoas percebe. No momento em que você lê um relógio, calcula quando um evento semanal recorre, verifica se um número é divisível por 9, ou olha para o último dígito de um ano para determinar em que dia da semana um aniversário cai, você está fazendo aritmética modular — mesmo que você não use esse nome para isso.</p>
    <p><strong>Agendamento e recorrência:</strong> Se um evento ocorre a cada 7 dias e hoje é terça-feira (dia 2, indexado a partir de domingo=0), então 30 dias a partir de agora é (2+30) mod 7 = 32 mod 7 = 4, que é quinta-feira. Este cálculo direto é mais rápido do que contar semanas e dias separadamente. Da mesma forma, se uma assinatura renova no dia 28 de cada mês e atualmente é o dia 15, os dias até a renovação são (28−15) mod 31 = 13 dias.</p>
    <p><strong>Dígitos de verificação digital:</strong> O padrão de código de barras ISBN-13 usa módulo 10. O último dígito de qualquer ISBN-13 é escolhido para que a soma ponderada de todos os 13 dígitos seja divisível por 10. Se você digitar incorretamente um único dígito ao inserir o ISBN de um livro, a verificação falhará (mod 10 ≠ 0) e um erro será sinalizado. Números de cartão de crédito usam o algoritmo de Luhn — uma verificação de mod-10 — para o mesmo propósito. O padrão ISBN-10 usa mod 11, permitindo a detecção de transposições simples.</p>
    <p><strong>Memória de computador e endereços:</strong> A RAM é tipicamente endereçada em potências de 2 (1024, 2048, 4096 bytes por página). Quando um programa acessa a memória, o SO usa módulo para calcular em qual página de memória um endereço cai: número_da_página = endereço mod tamanho_da_página. A seleção de linha de cache em caches de CPU usa módulo de forma semelhante. O envolvimento de buffer em processamento de áudio, enfileiramento de pacotes de rede e streaming de vídeo todos usam matemática de buffer circular: posição_de_escrita = (posição_de_escrita + 1) % tamanho_do_buffer.</p>
    <p><strong>Padrões de arte e música:</strong> Padrões rítmicos na teoria musical são analisados usando aritmética modular. Uma assinatura de tempo 4/4 tem batidas 0, 1, 2, 3 repetindo — um ciclo mod-4. Polirritmos ocorrem quando dois ritmos independentes com períodos m e n tocam simultaneamente; eles se sincronizam a cada lcm(m,n) batidas. Padrões visuais como tesselações de azulejos se repetem com períodos modulares em duas dimensões.</p>
    <p><strong>Cálculos geográficos e de fuso horário:</strong> Offsets UTC variam de −12 a +14. Convertendo entre fusos horários: dado o tempo T em UTC, hora local = (T + offset) mod 24. O valor resultante pode parecer não intuitivo (por exemplo, 23 + 5 = 28, mod 24 = 4, significando 4:00 AM do dia seguinte), mas a operação mod lida corretamente com o limite da meia-noite. Cruzamentos da linha internacional de data usam mod 24 em combinação com cálculos de dia da semana usando mod 7.</p>
    <p>Entender módulo torna esses cálculos diários mais claros, rápidos e menos propensos a erros. Uma vez que você vê o padrão, você notará aritmética modular em otimizações de compiladores, algoritmos de rotação em jogos de vídeo, agendamento de torneios round-robin, e balanceamento de carga em clusters de servidores — todos confiando no conceito simples mas poderoso de resto após divisão.</p>
  </section>

  <section class="related-section">
    <h2>Calculadoras Relacionadas</h2>
    <ul class="related-grid">
          <li><a href="/percentage-calculator/">Calculadora de Porcentagem</a></li>
          <li><a href="/fraction-calculator/">Calculadora de Fração</a></li>
          <li><a href="/square-root-calculator/">Calculadora de Raiz Quadrada</a></li>
          <li><a href="/standard-deviation-calculator/">Calculadora de Desvio Padrão</a></li>
          <li><a href="/scientific-notation-calculator/">Calculadora de Notação Científica</a></li>
    </ul>
  </section>