Calculadora de módulo
Resultado
Congruência
- Resto
- 3
O módulo de um número inteiro por outro é o menor resto não negativo que sobra quando o primeiro é dividido pelo segundo, e esta página o escreve como uma congruência: -47 ≡ 3 (mod 5). O resto é sempre pelo menos zero e estritamente menor que o tamanho do módulo, quaisquer que sejam os sinais das duas entradas. É essa única regra que faz a aritmética modular funcionar com números negativos. Pergunte a uma linguagem de programação quanto é −47 % 5 e a resposta depende da linguagem: JavaScript, C, Java e Go devolvem −2, enquanto Python devolve 3. Só uma dessas é o resto matemático, e é a que nunca sai negativa. A página aceita dois números inteiros entre −1.000.000.000 e 1.000.000.000, e imprime tanto o resto quanto a equação que amarra o dividendo, o resto e o módulo. Nada mais é exigido das entradas: o dividendo pode ser negativo, o módulo pode ser negativo, e o dividendo pode ser menor que o módulo em tamanho. O único valor recusado é um módulo igual a zero, porque nenhum número é divisível por zero e, portanto, mod 0 não tem resposta a dar.
Quatro combinações de sinal, com a congruência que cada uma produz
| Dividendo | Módulo | Resto | Congruência |
|---|---|---|---|
| -47 | 5 | 3 | -47 ≡ 3 (mod 5) |
| -1 | 2 | 1 | -1 ≡ 1 (mod 2) |
| 47 | 5 | 2 | 47 ≡ 2 (mod 5) |
| 47 | -5 | 2 | 47 ≡ 2 (mod -5) |
Leia a primeira e a terceira linhas juntas: o dividendo é -47 em uma e 47 na outra, o módulo é 5 nas duas, e os restos são 3 e 2. Esse par é o ponto inteiro da página. Sob a convenção que a maioria das calculadoras e linguagens de programação usa, a primeira linha traria -2, e o fato de ela trazer 3 é a diferença entre um resto comum e um resto não negativo. Agora leia a primeira e a segunda linhas: o dividendo continua negativo enquanto o módulo cai de 5 para 2, e o resto vai de 3 para 1 — reduzir o módulo à metade não reduz o resto à metade, mede o mesmo número contra um ciclo mais curto. A quarta linha tem módulo -5 e responde 2, exatamente como a terceira linha, de módulo 5, o que é a insensibilidade ao sinal em uma única comparação. Confira qualquer uma das quatro subtraindo o resto do dividendo: o resultado é sempre um múltiplo inteiro do módulo, que é o que a congruência está afirmando.
Fórmula
-47 ÷ 5 = -9 resto -2 (truncado); -2 + 5 = 3, então -47 mod 5 = 3 e -47 ≡ 3 (mod 5)
- a
- O dividendo, o número que está sendo reduzido. Ele pode ser negativo, e é esse o caso que vale testar: a mod n precisa sair não negativo mesmo quando a não é, então −47 tem de cair em 3, e não em −2. Números inteiros de −1.000.000.000 a 1.000.000.000 são aceitos, e 0 é um dividendo perfeitamente bom, cujo resto é sempre 0
- n
- O módulo, o número pelo qual se divide. Ele também pode ser negativo, e o resto não muda por causa disso: 47 mod −5 e 47 mod 5 são ambos 2, porque a afirmação de que n divide a − r e a afirmação de que −n divide a − r são duas maneiras de dizer a mesma coisa. Zero é o único valor recusado, e a página imprime n exatamente como foi digitado, em vez de trocá-lo pelo seu tamanho
- r
- O resto, que é a resposta. É o menor número não negativo que pode ser tirado de a e deixar um múltiplo de n. Duas condições o fixam por completo: r é pelo menos 0, e r é estritamente menor que o tamanho de n. −47 mod 5 dá 3 porque 3 é o menor valor não negativo para o qual −47 − 3 = −50 é múltiplo de 5
- ((a mod n) + |n|) mod |n|
- A receita em dois passos que a página segue, e a razão de o segundo passo existir. O primeiro passo é o que a maioria das linguagens calcula, e ele pode devolver uma resposta negativa; o segundo passo soma o tamanho do módulo e reduz de novo, o que empurra o resultado para o intervalo não negativo sem mudar de qual múltiplo de n ele está sendo medido. Usar o tamanho de n em vez do próprio n é o que deixa um módulo negativo passar sem alteração
- a ≡ r (mod n)
- A congruência, que é a primeira linha do painel de resultado. Ela diz que n divide a − r exatamente, e é a mesma afirmação que o resto escrito sozinho, com o módulo e o dividendo nomeados ao lado. O símbolo de três barras e a palavra mod são notação, e não texto, então são impressos igualmente em todos os idiomas do site, e nenhum separador de milhar é inserido nos números
- -47 ≡ 3 (mod 5)
- A entrada padrão escrita por extenso. É o caso que separa esta página de uma calculadora de resto: os mesmos dois números dão −9 com resto −2 sob a convenção truncada que uma calculadora de quatro operações usa, e -47 ≡ 3 (mod 5) aqui. Digitar 47 em vez de −47 dá 2 em vez de 3, então um único sinal de menos desloca a resposta em um passo inteiro ao longo do ciclo
Recorra a esta página sempre que a resposta precisar dar a volta em vez de parar. A aritmética do relógio é o exemplo mais antigo: 10 horas mais 5 horas dá 3 horas, que é 15 mod 12, e o resto nunca sair negativo é exatamente o que mantém um mostrador de relógio legível. O trabalho com calendário tem a mesma forma — o dia 100 de um ano, ou o dia da semana em que cai uma data, é um resto módulo 7. Em programação, o módulo é como você testa se um número divide outro (a mod n é 0 quando n cabe exatamente), como você traz um índice de volta para dentro do intervalo num buffer circular ou numa tabela hash, como você mantém um contador que dá voltas dentro de limites fixos, e como você escolhe um item de uma lista por vez. A criptografia é construída sobre isso: RSA e Diffie-Hellman são aritmética modular sobre números muito grandes, e a razão inteira de o resto ser definido como não negativo é que uma resposta com sinal seria uma aritmética ambígua para se construir em cima. Dígitos verificadores, de números de conta bancária a ISBNs, são restos módulo 9, 10 ou 11. Quando a pergunta é, em vez disso, “quantas vezes cabe e o que sobra, sob a convenção que a minha calculadora usa”, a Calculadora de resto é a página melhor, porque ela põe as duas convenções lado a lado; quando a pergunta é o que os dois números têm em comum, a Calculadora de MDC responde a isso diretamente.
Exemplos resolvidos
A armadilha do sinal: -47 mod 5
- Divida como de costume e jogue fora a fração: −47 ÷ 5 = −9,4, então o quociente truncado é −9
- −9 × 5 = −45, e −47 − (−45) = −2, então o resto truncado é −2
- O resto precisa ser pelo menos 0, então some o tamanho do módulo: −2 + 5 = 3
- Confira se o resultado está no intervalo: 0 ≤ 3 < 5, então nenhum ajuste adicional é necessário
- Leia a congruência: -47 ≡ 3 (mod 5), ou seja, 5 divide −47 − 3 = −50 exatamente
A entrada padrão, e a que explica por que esta página existe. Uma calculadora de quatro operações, e a maioria das linguagens de programação, relata −9 com resto −2 para esta divisão; essa resposta não está errada, ela está respondendo a uma pergunta formulada de outro jeito. O resto aqui é 3 porque 3 é o menor valor não negativo que deixa um múltiplo de 5. Repare que 47 mod 5 é 2, e não −3 nem 3 — deslocar o dividendo em um passo inteiro ao longo do ciclo desloca o resto em um, e os dois restos diferem exatamente em 1, e não em 5.
Um módulo negativo: 47 mod -5
- 47 ÷ 5 = 9,4, então 5 cabe nove vezes e 9 × 5 = 45
- 47 − 45 = 2, que já está no intervalo 0 ≤ 2 < 5
- O módulo é negativo, mas a divisibilidade não se importa com o sinal: −5 divide 45 exatamente, então também divide 47 − 2 exatamente
- A congruência é escrita com o módulo como ele foi digitado: 47 ≡ 2 (mod -5)
O caso que mostra que o resto é insensível ao sinal do módulo. Trocar −5 por 5 não muda nada na resposta, porque −5 divide um número exatamente quando 5 divide. A página mantém o sinal de menos na congruência impressa em vez de descartá-lo em silêncio; reescrever −5 como 5 pareceria que a sua entrada foi jogada fora. Compare as duas linhas da tabela de referência que compartilham o divisor −5 com as linhas que compartilham 5: só o sinal do dividendo move o resto.
O caso comum: 1.234 mod 12
- 12 × 100 = 1.200, e 1.234 − 1.200 = 34, então continue: 12 × 2 = 24 deixa 34 − 24 = 10
- 12 × 3 = 36 passaria de 34, então o quociente é 102 e o que sobra é 10
- 10 é pelo menos 0 e menor que 12, então já é o resto
- Leia como uma congruência: 1234 ≡ 10 (mod 12)
O caso simples, com dois números positivos, em que o resto e um resto comum coincidem — que é justamente o motivo de ele estar aqui. Quando os dois números são positivos não há nada a reconciliar, e a página faz o mesmo trabalho que qualquer ferramenta de resto faz. As linhas interessantes são as que têm um sinal de menos. Este par em particular tem uma segunda leitura que vale notar: 1.234 mod 12 é como você perguntaria em que hora uma duração cai quando o relógio tem doze horas no mostrador, e 10 é uma hora perfeitamente sensata, enquanto −2 não seria.
Limitações
O módulo não pode ser zero. Dividir por zero não tem resposta, então não há resto a relatar, e muito menos um menor resto não negativo; a página recusa a entrada em vez de devolver um valor de preenchimento com aparência de resultado. Os dois números precisam ser inteiros. Um módulo fracionário tem definição própria em alguns ramos da matemática, mas não é a que esta página implementa, então 47,5 é recusado em vez de silenciosamente arredondado para 48 e respondido como se fosse isso que você perguntou. O tamanho de cada número é limitado a um bilhão, o que mantém todo passo intermediário dentro da faixa em que um número de dupla precisão ainda representa inteiros exatamente; além disso a aritmética começaria a arredondar e a resposta teria aparência perfeitamente comum enquanto estivesse errada. A página relata um resto e uma congruência, e nada mais: ela não dá o quociente, não lista os outros números congruentes ao seu dividendo e não faz aritmética modular com mais de um par por vez. Um módulo negativo é aceito e impresso como digitado, o que significa que duas congruências que dizem a mesma coisa podem parecer diferentes na página — 47 ≡ 2 (mod -5) e 47 ≡ 2 (mod 5) são a mesma afirmação. Há uma diferença de grafia entre as duas linhas do painel que vale saber de antemão: a congruência é impressa como texto puro, sem separador de milhar, enquanto o resto é impresso como número e segue a escrita numérica do idioma — com −1.000.000.000 e 999.999.999, a primeira linha sai como -1000000000 ≡ 999999998 (mod 999999999) e a segunda como 999.999.998. O sinal de menos que a página aceita ao digitar é o hífen do teclado, o mesmo que aparece nas congruências impressas: o traço tipográfico −, que é o que este texto usa em português, não é reconhecido como número, e o campo fica marcado com “Digite um número.” Por fim, a tabela de referência abaixo mostra quatro pares fixos em vez de acompanhar as suas entradas; o painel de resultado é a parte que responde ao que você digitou.
Perguntas frequentes
- Por que -47 mod 5 é igual a 3, e não a -2?
- Porque o resto é definido como o menor número não negativo que pode ser subtraído do dividendo para deixar um múltiplo do módulo. Tanto −2 quanto 3 se qualificam no sentido de que −47 − (−2) = −45 e −47 − 3 = −50 são múltiplos de 5, então a aritmética sozinha não escolhe entre eles. A definição escolhe: o resto mora no intervalo de 0 até o módulo, sem incluí-lo, e −2 está fora dele. Todo o resto decorre disso. O que você recebe de uma linguagem de programação depende de qual convenção ela escolheu, e JavaScript, C, Java e Go escolheram a outra — elas deixam o sinal seguir o dividendo. Python escolheu esta. Nenhuma das linguagens está quebrada; elas respondem a perguntas formuladas de maneira diferente.
- O módulo pode ser negativo?
- Pode, e o resto não é afetado pelo sinal dele. Um módulo negativo funciona porque a divisibilidade ignora os sinais: −5 divide um número exatamente quando 5 divide, então o conjunto dos múltiplos de −5 é o mesmo conjunto dos múltiplos de 5, e o menor número não negativo desse conjunto é o mesmo nos dois casos. A página imprime o módulo exatamente como foi digitado, em vez de trocar −5 por 5, porque reescrever a sua entrada pareceria que o sinal foi descartado. Então 47 mod −5 é 2 e 47 mod 5 também é 2, e as duas congruências impressas diferem apenas em uma delas mostrar um sinal de menos.
- O que acontece se eu digitar 0 como módulo?
- A página recusa. Mod 0 não tem valor a relatar: o zero divide apenas o zero, então não há múltiplo inteiro de 0 com que medir o dividendo nem resto a tirar. Devolver 0, ou o próprio dividendo, teria aparência de resposta e estaria errado para toda entrada. Recusar a entrada é o desfecho honesto. A divisão por zero é indefinida em todo o resto da aritmética pela mesma razão.
- Isto é a mesma coisa que a calculadora de resto deste site?
- Não, e as duas dão respostas diferentes para a mesma conta, que é a maneira mais clara de ver a diferença. A página de resto expõe duas convenções lado a lado e deixa você escolher, porque a divisão longa tem mesmo duas em circulação e uma sala de aula pode ensinar qualquer uma delas. Esta página não oferece escolha, porque o módulo tem uma leitura só: a resposta nunca é negativa. Para −47 dividido por 5, a página de resto vai mostrar −9 com resto −2 sob a convenção padrão dela, enquanto esta página mostra a congruência -47 ≡ 3 (mod 5). Use aquela página para ver como as duas convenções diferem num par de números específico; use esta quando o que você quer é o resto em si.
- Onde um resto é realmente usado?
- Em todo lugar onde uma contagem precisa dar a volta em vez de crescer sem parar. O mostrador do relógio é o caso do dia a dia: doze horas no mostrador significa que a hora depois das 10 mais 5 horas é 15 mod 12, que é 3. Os dias da semana funcionam do mesmo jeito, módulo 7. Em programação, o módulo testa a divisibilidade, porque a mod n é 0 exatamente quando n cabe em a sem sobrar; ele traz um índice de volta para o intervalo num buffer circular ou numa tabela hash, onde um índice que passou do fim tem de voltar ao começo; e ele mantém um contador que dá voltas dentro de limites fixos. A criptografia de chave pública é aritmética modular sobre números muito grandes, que é a razão de a convenção não negativa importar — uma aritmética que produzisse resultados com sinal seria ambígua para se construir em cima.
- Por que só a congruência aparece, e não o quociente?
- Porque o quociente não faz parte do que um resto diz. Uma congruência nomeia o dividendo, o resto e o módulo, e a afirmação que ela faz é que o módulo divide a diferença entre os dois primeiros. Essa afirmação está completa sem um quociente, já que o quociente é o número que você obtém perguntando quantas vezes inteiras o módulo cabe, e essa pergunta pertence à divisão longa. Se você quer o quociente junto, a Calculadora de resto e a Calculadora de divisão longa relatam os dois. O resto sozinho também é impresso, na segunda linha do painel de resultado, então quem só quer o número não precisa lê-lo dentro da frase.
Referências
- Modular Arithmetic — the arithmetic of remainders, including the convention that the residue is taken in the interval from 0 up to the modulus — Wolfram MathWorld (United States)
- Congruence — the notation a ≡ r (mod n) and what it means for one number to divide the difference of two others exactly — Wolfram MathWorld (United States)
- Remainder (%) — the JavaScript operator whose sign follows the dividend, the behaviour that makes -47 % 5 return -2 and the reason a second step is needed here — MDN Web Docs (Mozilla)