Resto da Divisão
Calcula o resto e o quociente de uma divisão.
O que é o resto da divisão?
Na divisão inteira, quando um número não é divisível exatamente por outro, sobra um valor — o resto. Por exemplo, 17 ÷ 5 = 3 com resto 2 (porque 5 × 3 = 15, e 17 − 15 = 2). O resto é sempre menor que o divisor.
Em linguagens de programação, o operador de resto é geralmente representado por % (mod). Em Python: 17 % 5 = 2. Em JavaScript: 17 % 5 = 2. Em SQL: 17 MOD 5 = 2.
Aplicações do resto da divisão
Verificar divisibilidade: se o resto for 0, o número é divisível. Número par: n % 2 == 0. Múltiplo de 3: n % 3 == 0. Verificação de dígitos (CPF, CNPJ, código de barras): usam o resto da divisão como base do algoritmo.
Operações cíclicas: o resto é ideal para "girar" em um ciclo. Hora do dia: minutos % 60 dá os minutos dentro da hora. Dias da semana: dia_do_ano % 7 dá o dia da semana.
Distribuição em buckets: hash % número_de_partições distribui dados uniformemente entre partições de banco de dados ou servidores.
Criptografia: operações em aritmética modular (resto da divisão) são fundamentais em algoritmos criptográficos como RSA e Diffie-Hellman.
Resto versus divisão decimal
17 ÷ 5 em divisão decimal é 3,4. Na divisão inteira com resto: quociente = 3, resto = 2. São operações diferentes: a decimal dá precisão em frações; a inteira com resto é fundamental para verificações de divisibilidade e operações modulares.
Divisão euclidiana
Dividir 17 por 5 dá quociente 3 e resto 2, porque 17 = 5 × 3 + 2. Essa é a divisão euclidiana, e ela garante que existe um único par (quociente, resto) com o resto sempre maior ou igual a zero e menor que o divisor. O resto zero significa divisão exata — é assim que se testa divisibilidade.
O operador módulo em programação
Escrito % na maioria das linguagens (e mod em algumas), o módulo é uma das
operações mais usadas no dia a dia de quem programa:
Par ou ímpar: n % 2 == 0 identifica pares. É o teste mais comum de todos.
Ciclos e repetição: i % n percorre 0, 1, …, n−1 e recomeça — usado para
alternar cores de linha em tabelas, girar entre elementos de um carrossel e distribuir tarefas em
rodízio.
Tempo: converter 3.725 segundos em horas, minutos e segundos é uma sequência de divisões e restos: 3725 ÷ 3600 = 1h, resto 125; 125 ÷ 60 = 2min, resto 5s.
Tabelas hash: o índice do balde é o hash da chave módulo o tamanho da tabela.
Dígitos verificadores: CPF, CNPJ, PIS e RENAVAM são todos calculados com módulo 11, e o código de barras de boleto com módulo 10.
A armadilha dos números negativos
Aqui as linguagens divergem, e isso já causou muito bug. Em Python, o resultado de
-7 % 3 é 2: o resto acompanha o sinal do divisor e é sempre não
negativo. Em C, Java, JavaScript, C# e Go, o mesmo -7 % 3 dá
−1: o resto acompanha o sinal do dividendo.
Nenhuma das duas está errada — são convenções diferentes sobre como arredondar o quociente. Mas se
você usa módulo para indexar um array, o valor negativo estoura o índice. A correção idiomática nas
linguagens do segundo grupo é ((n % m) + m) % m, que força o resultado para o intervalo
não negativo. Vale conferir o comportamento da sua linguagem antes de confiar.
Aritmética modular
Trabalhar "módulo n" é a matemática do relógio: às 22h, somar 5 horas dá 3h, porque 27 mod 24 = 3. Essa aritmética é a base do cálculo de dia da semana, de calendários, de criptografia — RSA e Diffie-Hellman operam inteiramente em aritmética modular — e de somas de verificação como o algoritmo de Luhn dos cartões de crédito.
Continue por aqui
- Fatorar Número — resto zero significa divisor exato — este decompõe o número por inteiro.
- Calculadora de MDC — o algoritmo de Euclides é uma sequência de restos de divisão.
Perguntas frequentes
O que é o operador módulo?
É o resto da divisão inteira, escrito % na maioria das linguagens. Dividir 17 por 5 dá quociente 3 e resto 2, porque 17 = 5 × 3 + 2. Resto zero significa divisão exata — é assim que se testa divisibilidade.
Por que -7 % 3 dá resultados diferentes em cada linguagem?
Em Python o resultado é 2 (o resto acompanha o sinal do divisor); em C, Java, JavaScript, C# e Go é −1 (acompanha o sinal do dividendo). São convenções diferentes de arredondamento do quociente, e nenhuma está errada.
Como forçar um resto sempre positivo?
Use ((n % m) + m) % m nas linguagens em que o resto pode sair negativo. É a correção idiomática e evita estourar índice ao usar módulo para acessar posições de um array.
Onde o módulo é usado na prática?
Testar par ou ímpar, alternar cores de linha em tabelas, distribuir tarefas em rodízio, converter segundos em horas e minutos, calcular índices de tabela hash e computar dígitos verificadores de CPF, CNPJ, PIS e boletos.