Divisão modular
Divida em aritmética modular: 8 dividido por 3 módulo 11 dá 10, porque o inverso de 3 é 4 e 3 vezes 10 deixa resto 8. Você também recebe o inverso, o mdc e um valor de conferência. 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
- A
- 8
- B
- 3
- N
- 11
- A módulo
- 8
- B módulo
- 3
- Inversa
- 4
- Quociente
- 10
A divisão modular pede um resíduo q tal que b vezes q seja congruente a a módulo n. Na aritmética comum você simplesmente divide; na aritmética modular a divisão é multiplicação pelo inverso modular do divisor. Esse inverso existe somente quando b e n são coprimos. Laboratórios de criptografia, programação competitiva, tarefas de corpos finitos e exercícios de congruências lineares precisam dessa operação, mas muitas linguagens expõem apenas um GCD ou um inverso modular isolado e deixam o passo de multiplicar com você. Esta calculadora recebe os inteiros a, b e o módulo n, inverte b módulo n com o algoritmo de Euclides estendido quando possível, multiplica por a e devolve o único quociente não negativo entre zero e n menos um, junto com o inverso, o gcd e um produto de verificação para que você possa conferir o resultado sem rederivar os passos.
O que a divisão modular significa e quando está definida
Nos inteiros todo número não nulo tem um recíproco nos racionais, de modo que a divisão está definida longe do zero. Módulo n o quadro é mais rigoroso: os resíduos formam um anel e apenas as unidades—elementos com inverso multiplicativo—podem ser divisores legais. Dizemos que q é um quociente modular de a dividido por b módulo n quando b vezes q deixa o mesmo resto que a ao reduzir ambos os produtos módulo n.
De forma equivalente, q é congruente a a vezes o inverso de b módulo n. O inverso de b existe se e somente se o gcd de b e n for um; caso contrário todo múltiplo de b compartilha um fator com n e não pode atingir todas as classes de resíduo, de modo que nenhum q único serve para um a arbitrário.
Engenheiros e estudantes encontram essa barreira ao dividir em um módulo composto que não é um corpo primo, ao cancelar um coeficiente em uma congruência linear ou ao desfazer uma multiplicação modular em um passo de hash ou cifra. Observe que a em si não precisa ser coprimo com n; apenas o divisor b deve ser uma unidade. Essa assimetria é fácil de esquecer quando você só lembra o caso especial do inverso modular com a igual a um.
Uso prático, limites, preços e entrega
Use a ferramenta do navegador quando quiser um quociente modular rápido ao ler uma nota de teoria dos números, conferir um exercício da forma b x congruente a a mod n ou depurar um pipeline modular que já multiplica por inversos à mão. As entradas aceitas são inteiros a e b com valor absoluto no máximo um trilhão e módulos n de dois a um trilhão. Os resultados são determinísticos: o mesmo triplo sempre produz os mesmos campos quotient, inverse e check.
Se você só precisa do inverso de b sem multiplicar por a, prefira a capacidade dedicada de inverso modular; esta página atende à intenção completa de divisão que as pessoas buscam como divisão modular ou a dividido por b mod n.
Casos de uso
Laboratórios de cripto e corpos finitos
Instrutores e alunos podem dividir elementos de corpo módulo um primo, ou inspecionar o gcd quando um módulo composto de amostra torna o divisor não invertível.
Corretores de tarefas e congruências lineares
Avaliadores automáticos podem verificar soluções de b x ≡ a (mod n) comparando o quociente retornado e rejeitar casos em que não existe uma classe de resíduo única.
Perguntas frequentes
O que acontece se b não for invertível módulo n?
A mensagem inclui gcd(b, n) para que você saiba por que a divisão modular não está definida. A validação falha não é cobrada.
Como o quociente é calculado?
O algoritmo de Euclides estendido encontra b⁻¹ mod n quando gcd(b, n) = 1; a calculadora multiplica esse inverso por a módulo n com aritmética inteira exata.
A calculadora de divisão modular é gratuita?
A ferramenta do navegador roda grátis no seu dispositivo.
Quais faixas de a, b e n são aceitas?
n deve ser um inteiro de 2 a 1,000,000,000,000. a e b devem ser inteiros cujo valor absoluto seja no máximo esse mesmo limite. Valores fora desses limites são rejeitados.
Quanto é 8 dividido por 3 módulo 11?
O resultado é 10. O inverso de 3 módulo 11 é 4, e multiplicar 8 por ele dá o quociente 10. Para conferir, 3 vezes 10 deixa resto 8 na divisão por 11.
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-division \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":8,"b":3,"n":11}'const res = await fetch("https://api.kit.forhosting.com/numth/modular-division", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 8,
"b": 3,
"n": 11
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/modular-division",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 8,
"b": 3,
"n": 11
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/modular-division", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":8,"b":3,"n":11}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":8,"b":3,"n":11}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/modular-division", 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
{
"a": 8,
"b": 3,
"n": 11
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.modular_division",
"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.
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
O que a divisão modular significa e quando está definida
Devolver um erro invalid_input explícito quando b não é invertível é mais útil do que um resíduo silencioso e errado: o cliente aprende que a divisão não está definida para esse par e pode ramificar pelo gcd informado em vez de confiar em uma biblioteca incompleta.
Como esta calculadora inverte b e multiplica por a
Chame a capacidade com os campos inteiros a, b e n, onde n é pelo menos dois. A implementação primeiro reduz a e b a resíduos não negativos a_mod e b_mod no intervalo de zero a n menos um e depois executa o algoritmo de Euclides estendido em b_mod e n. Cada passo registra o quociente inteiro e atualiza os coeficientes de Bézout de modo que, ao terminar, o coeficiente de b_mod vezes b_mod mais um coeficiente de n iguala o gcd. Se esse gcd não for um, a requisição falha com invalid_input e uma mensagem que nomeia b, n e o gcd; nada é cobrado. Se o gcd for um, o coeficiente de b_mod é reduzido para zero até n menos um e armazenado como inverse. O produto modular de a_mod e inverse é então obtido com aritmética BigInt exata para que resíduos grandes permaneçam corretos até o limite publicado, e o produto é devolvido como quotient. A resposta também ecoa a, b, n, a_mod, b_mod, gcd e check igual a b_mod vezes quotient módulo n, que deve coincidir com a_mod sempre que a chamada for bem-sucedida. Os valores absolutos de a e b, e o módulo n, são limitados a um trilhão para que todo intermediário fique em um regime de inteiros seguros do Worker.
Uso prático, limites, preços e entrega
Use a API quando um script, corretor ou plataforma educacional precisar de muitas divisões sem embutir uma rotina de GCD estendido e um passo cuidadoso de multiply-mod. Cada requisição bem-sucedida é um item faturável a US$ 0,002; falhas de validação e divisores não invertíveis não consomem saldo. Conecte o endpoint a ajudas de competição, demos de corpos finitos, sandboxes de ensino RSA que precisam de mais do que inversos isolados ou qualquer pipeline inteiro que prefira aritmética exata a heurísticas de ponto flutuante. Como a unidade é um único item e o motor é parse puro, a latência permanece baixa e o canal web gratuito espelha a API paga sem um segundo caminho de código que possa divergir.
Casos de integração
Programação competitiva e aritmética modular
Programadores competitivos podem calcular a/b mod n sob módulos primos ou compostos e capturar divisores não invertíveis via invalid_input em vez de trechos ad hoc de GCD estendido.
Perguntas técnicas
Como calculo a divisão modular a ÷ b mod n?
Envie JSON com os campos inteiros a, b e n (n ≥ 2) para numth.modular_division. Em caso de sucesso a resposta devolve quotient em 0..n−1, mais o inverso de b, a_mod, b_mod, gcd e check igual a a_mod.