Inverso multiplicativo modulo n
Ache o número que desfaz uma multiplicação módulo n: o inverso de 3 módulo 11 é 4, porque 3 × 4 = 12 deixa resto 1. Ele só existe quando o inteiro e o módulo não têm nenhum fator comum. 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
- Inteiro
- 3
- Módulo
- 11
- Resto
- 3
- Inversa
- 4
- Gcd
- 1
- Verificação
- 1
O inverso multiplicativo de um inteiro modulo n é o resíduo inverse que satisfaz inteiro vezes inverse congruente a um modulo n. Esse inverse existe se e somente se o inteiro e o módulo forem coprimos — o máximo divisor comum vale um. Tutoriais de criptografia, etapas de chave privada RSA, divisão modular em programação competitiva e cálculos em grupos cíclicos precisam dessa operação, mas muitas linguagens só expõem um GCD binário e deixam os coeficientes de Bézout com você.
O que é um inverso multiplicativo modulo n e quando ele existe
Na aritmética comum todo número não nulo tem inverso multiplicativo: divida por ele e obtém um. Na aritmética modular a mesma ideia vira uma congruência. Dizemos que inverse é um inverso multiplicativo de um inteiro modulo n quando o inteiro vezes inverse deixa resto um ao dividir pelo módulo.
Como os resíduos reiniciam a cada n passos, nem todo inteiro tem tal inverse. O obstáculo é teórico-numérico, não de ponto flutuante: se d é o gcd do inteiro e do módulo e d é maior que um, então o inteiro vezes qualquer candidato é múltiplo de d, de modo que o produto nunca pode ser congruente a um, que não é múltiplo de d.
Por outro lado, a identidade de Bézout garante inteiros x e y com inteiro vezes x mais módulo vezes y igual a um exatamente quando esse gcd é um, e reduzir x modulo n produz o inverse. Engenheiros encontram essa condição ao dividir em um anel finito, ao escolher expoentes de decriptação RSA que invertem o expoente público modulo phi de N, ao desfazer multiplicações modulares em pipelines de hash ou ao resolver congruências lineares em programação competitiva.
Devolver um erro explícito quando o par não é coprimo é mais útil do que uma falha silenciosa: o cliente descobre que não existe inverse e pode ramificar pelo gcd em vez de adivinhar qual biblioteca devolveu um resíduo errado. A calculadora trata portanto um par não coprimo como entrada inválida, em vez de inventar um inverse provisório que quebraria qualquer verificação posterior da congruência definidora.
Como esta calculadora executa o algoritmo de Euclides estendido
A implementação primeiro reduz o inteiro à classe de resíduo não negativa residue em zero até n menos um e depois aplica o algoritmo de Euclides estendido ao par residue e modulus. Cada passo registra o quociente inteiro e atualiza os coeficientes de Bézout de modo que, ao terminar, o coeficiente de residue vezes residue mais um coeficiente do módulo iguala o gcd. Se o gcd for um, o coeficiente de residue é reduzido ao intervalo de zero a n menos um e devolvido como inverse.
Os valores absolutos são limitados a um trilhão para que todo dobramento intermediário do produto modular fique dentro da faixa de inteiros seguros do JavaScript. Inteiros negativos são aceitos e reduzidos antes do laço euclidiano, então uma entrada de menos três modulo onze é tratada como residue oito e invertida nessa classe.
Uso prático, limites, preços e entrega
Use a ferramenta do navegador quando quiser um inverse rápido ao ler uma nota de cripto, conferir uma congruência de dever de casa ou depurar um passo de multiplicação modular. As entradas aceitas são inteiros cujo valor absoluto é no máximo um trilhão e módulos de dois a um trilhão. Os resultados são determinísticos: o mesmo par sempre produz o mesmo inverse e o mesmo campo check.
Mantenha o par dentro dos limites publicados, trate o erro de não coprimos como resultado de primeira classe nos seus testes e você obtém um inverse reproduzível para deveres, plugins LMS e workers na borda sem montar um sistema de álgebra computacional próprio.
Casos de uso
Labs de cripto e ensino de RSA
Instrutores e alunos podem inverter expoentes públicos modulo φ(N) sob demanda e inspecionar o gcd quando um módulo de amostra não é coprimo com o expoente.
Programação competitiva e divisão modular
Programadores competitivos podem substituir trechos ad hoc de GCD estendido por uma única chamada determinística ao verificar divisão modular sob módulos primos ou compostos.
Perguntas frequentes
Como obtenho o inverso multiplicativo de um inteiro modulo n?
Em sucesso a resposta devolve inverse em 0..n−1, mais residue, gcd e check igual a 1.
Com qual método o inverso é calculado?
O algoritmo de Euclides estendido. Ele acha coeficientes de Bézout para o residue reduzido e o módulo; quando o gcd é 1, o coeficiente do residue é reduzido ao intervalo 0..n−1.
O que acontece se o inteiro e o módulo tiverem um fator comum?
Nesse caso não existe inverso, e a calculadora avisa com uma mensagem que cita os dois números e o máximo divisor comum deles, em vez de inventar um valor que não satisfaria a congruência.
Como confiro se o inverso está certo?
Multiplique o inteiro, já reduzido módulo n, pelo inverso e divida por n: o resto tem de ser 1. Essa conferência aparece junto do resultado, com o inteiro reduzido e o máximo divisor comum.
Quais números posso digitar?
Um inteiro de até um trilhão em valor absoluto, inclusive negativo, e um módulo a partir de 2. O inteiro é reduzido primeiro ao resto entre 0 e n menos 1, e o inverso sai nesse mesmo intervalo.
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/math/multiplicative-inverse-modulo \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"integer":3,"modulus":11}'const res = await fetch("https://api.kit.forhosting.com/math/multiplicative-inverse-modulo", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"integer": 3,
"modulus": 11
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/multiplicative-inverse-modulo",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"integer": 3,
"modulus": 11
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/multiplicative-inverse-modulo", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"integer":3,"modulus":11}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"integer":3,"modulus":11}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/multiplicative-inverse-modulo", 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
{
"integer": 3,
"modulus": 11
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.multiplicative_inverse_modulo",
"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.
Limites
max_abs | 1000000000000 |
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
Esta calculadora recebe integer e modulus, executa o algoritmo de Euclides estendido de forma determinística e devolve o único inverse não negativo no intervalo de zero a n menos um, junto com o residue reduzido, o gcd e um produto check para você confirmar o resultado sem refazer os passos.
Como esta calculadora executa o algoritmo de Euclides estendido
Chame a capacidade com os campos inteiros integer e modulus, em que o módulo é pelo menos dois. Se esse gcd não for um, a requisição falha com invalid_input e uma mensagem que nomeia ambas as entradas e o gcd; nada é cobrado. A resposta também ecoa integer, modulus, residue, gcd e check igual a residue vezes inverse modulo n, que deve ser um sempre que a chamada tiver sucesso.
Uso prático, limites, preços e entrega
Use a API quando um script, corretor ou plataforma educacional precisar de muitos inversos sem embutir uma rotina de GCD estendido. Cada requisição bem-sucedida é um item faturável a US$ 0,002; falhas de validação e pares não coprimos não consomem saldo. Conecte o endpoint a sandboxes de ensino RSA, demos de anéis finitos, ajudas de programação competitiva ou qualquer pipeline inteiro que prefira aritmética exata a heurísticas aproximadas. 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
Corretores de tarefas e pipelines de teoria dos números
Corretores e scripts automáticos podem confirmar inversos, detectar entradas não coprimas via invalid_input e manter cada produto intermediário dentro dos limites documentados.
Perguntas técnicas
O que a API responde se o inteiro e o módulo não forem coprimos?
A requisição falha com invalid_input. A mensagem inclui gcd(integer, modulus) para você saber por que não existe inverso multiplicativo. Validação falha não é cobrada.
Custa algo usar o inverso multiplicativo modulo n?
O widget do navegador roda grátis no seu dispositivo. Cada chamada à API consome saldo KIT pré-pago a US$ 0,002 por item correto; integer ou modulus inválidos, ou um par não coprimo, não são faturados.
Quais valores de integer e modulus são aceitos?
integer pode ser qualquer inteiro finito cujo valor absoluto seja no máximo um trilhão. modulus deve ser um inteiro de 2 a um trilhão. Não inteiros são rejeitados.