Calculadora de ordem multiplicativa módulo n
A calculadora de ordem multiplicativa encontra o menor expoente positivo k para o qual a elevado a k é congruente a 1 módulo n.
Executar grátis
Informe uma base inteira a e um módulo n; o resultado inclui a base reduzida, a função totiente de Euler, a ordem e uma verificação modular direta. O cálculo só é definido quando a e n são coprimos, portanto pares inválidos geram um erro claro, e não um número enganoso. A ferramenta é útil em exercícios de aritmética modular, análise de subgrupos cíclicos, padrões periódicos e teoria elementar dos números.
O significado da ordem multiplicativa
Para os inteiros a e n, a ordem multiplicativa de a módulo n é o menor inteiro positivo k tal que a<sup>k</sup> deixa resto 1 na divisão por n. A expressão “menor positivo” é importante: expoentes posteriores também podem produzir 1, mas a ordem marca o primeiro retorno à identidade na multiplicação modular. Por exemplo, as potências de 2 módulo 9 apresentam os resíduos 2, 4, 8, 7, 5 e, depois, 1; logo, a ordem é 6. O conceito descreve o tamanho do subgrupo cíclico gerado por a entre as classes de resíduos invertíveis módulo n. Antes de calcular, a ferramenta reduz a ao seu resíduo não negativo padrão, tratando de maneira consistente bases negativas e bases maiores que n. Ela também retorna um valor de conferência calculado com a ordem informada. O valor 1 confirma a congruência que define a ordem, enquanto o processo de redução garante que nenhum divisor próprio ainda presente no expoente candidato possa satisfazê-la.
Por que a coprimalidade é necessária
A ordem multiplicativa módulo n só existe quando gcd(a, n) é 1. Isso não é apenas uma convenção de entrada. Um elemento precisa ter inverso multiplicativo módulo n para que suas potências pertençam ao grupo finito das unidades e possam voltar a 1. Se a e n compartilham um fator, toda potência positiva de a mantém um obstáculo de divisibilidade compatível e não pode ser congruente a 1 módulo n. A calculadora testa essa condição imediatamente e informa o máximo divisor comum efetivo quando ela não é atendida. O módulo também deve ser pelo menos 2, pois o problema usual da ordem é formulado em um sistema de resíduos não trivial. A base pode ser zero, negativa ou positiva dentro do limite publicado, porém zero não funciona com nenhum módulo permitido porque nunca é coprimo com n. Ao preparar a entrada, use inteiros exatos, em vez de decimais ou aproximações científicas. Isso preserva a aritmética discreta da qual dependem o máximo divisor comum, a fatoração e as potências modulares.
Como a calculadora encontra o menor expoente
A calculadora não testa todos os expoentes em sequência. Primeiro, ela fatora n o suficiente para calcular a função totiente de Euler phi(n). O teorema de Euler garante que a elevado a phi(n) é congruente a 1 quando gcd(a, n) é 1; portanto, a ordem procurada deve dividir phi(n). Em seguida, o algoritmo fatora phi(n) e verifica repetidamente se a divisão do candidato atual por um de seus fatores primos ainda produz uma potência modular igual a 1. Sempre que isso acontece, o candidato menor substitui o anterior. Quando nenhum fator primo pode mais ser removido, o candidato restante é a ordem multiplicativa. A exponenciação modular usa quadrados sucessivos, mantendo os valores intermediários reduzidos módulo n, e toda a aritmética inteira permanece exata. Essa abordagem é muito mais rápida do que percorrer cada expoente positivo, especialmente quando a ordem é grande. As entradas são limitadas a um trilhão, garantindo que a fatoração por tentativa tenha um teto determinístico claro, apropriado tanto para a ferramenta no navegador quanto para chamadas automatizadas à API.
Casos de uso
Conferir um exercício de teoria dos números
Confirme o menor expoente, a função totiente de Euler, o resíduo reduzido e a congruência final sem listar manualmente uma longa sequência de potências.
Estudar subgrupos cíclicos
Meça o subgrupo gerado por um resíduo invertível e compare sua ordem com phi(n) ao investigar raízes primitivas.
Analisar padrões modulares periódicos
Encontre o período exato da multiplicação repetida módulo n em cálculos de recorrência, divisibilidade e criptografia elementar.
Perguntas frequentes
O que representa o resultado da ordem multiplicativa?
É o menor inteiro positivo k para o qual a^k é congruente a 1 módulo n.
Por que a e n precisam ser coprimos?
Somente resíduos com gcd(a, n) igual a 1 são invertíveis módulo n e podem ter ordem multiplicativa.
A base a pode ser negativa?
Sim. A calculadora reduz a ao seu resíduo não negativo módulo n antes de determinar a ordem.
A ordem é sempre igual à função totiente de Euler phi(n)?
Não. Em uma entrada válida, a ordem sempre divide phi(n), mas só é igual a phi(n) quando a gera todo o grupo de unidades módulo n.
Quanto custa uma solicitação à API?
Cada solicitação à API custa US$ 0,002. O mesmo cálculo determinístico está disponível gratuitamente no navegador.
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/multiplicative-order \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":2,"n":9}'const res = await fetch("https://api.kit.forhosting.com/numth/multiplicative-order", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 2,
"n": 9
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/multiplicative-order",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 2,
"n": 9
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/multiplicative-order", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":2,"n":9}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":2,"n":9}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/multiplicative-order", 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": 2,
"n": 9
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.multiplicative_order",
"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. |