Calcolatore dell’ordine moltiplicativo modulo n
Il calcolatore dell’ordine moltiplicativo trova il più piccolo esponente positivo k per cui a elevato a k è congruo a 1 modulo n.
Esegui gratis nel browser
Inserisca una base intera a e un modulo n: il risultato comprende la base ridotta, la funzione phi di Eulero, l’ordine e una verifica modulare diretta. Il calcolo è definito soltanto quando a e n sono coprimi; le coppie non valide producono quindi un errore chiaro, anziché un numero fuorviante. Lo strumento è utile per esercizi di aritmetica modulare, analisi di sottogruppi ciclici, schemi periodici e teoria elementare dei numeri.
Che cosa significa ordine moltiplicativo
Per gli interi a e n, l’ordine moltiplicativo di a modulo n è il minimo intero positivo k tale che a<sup>k</sup> dia resto 1 nella divisione per n. La precisazione “minimo positivo” è importante: anche esponenti successivi possono produrre 1, ma l’ordine identifica il primo ritorno all’identità nella moltiplicazione modulare. Per esempio, le potenze di 2 modulo 9 hanno residui 2, 4, 8, 7, 5 e infine 1, quindi l’ordine è 6. Il concetto descrive la dimensione del sottogruppo ciclico generato da a tra le classi di resto invertibili modulo n. Prima del calcolo, lo strumento riduce a al consueto residuo non negativo; in questo modo gestisce coerentemente sia le basi negative sia quelle maggiori di n. Restituisce inoltre un valore di controllo calcolato mediante l’ordine indicato. Un controllo pari a 1 conferma la congruenza caratteristica, mentre il procedimento di riduzione garantisce che nessun divisore proprio ancora presente nell’esponente candidato possa soddisfarla.
Perché è richiesta la coprimalità
L’ordine moltiplicativo modulo n esiste solo quando gcd(a, n) è 1. Non è una semplice convenzione sui dati in ingresso. Un elemento deve possedere un inverso moltiplicativo modulo n affinché le sue potenze appartengano al gruppo finito delle unità e possano tornare a 1. Se a e n condividono un fattore, ogni potenza positiva di a conserva un ostacolo di divisibilità compatibile e non può essere congrua a 1 modulo n. Il calcolatore verifica subito questa condizione e segnala il massimo comune divisore effettivo quando non è rispettata. Anche il modulo deve essere almeno 2, perché il consueto problema dell’ordine è formulato in un sistema di residui non banale. La base può essere zero, negativa o positiva entro il limite pubblicato; tuttavia zero non è valido per alcun modulo ammesso, dato che non è mai coprimo con n. Quando prepara i dati, utilizzi interi esatti e non decimali o approssimazioni scientifiche. Così mantiene intatta l’aritmetica discreta da cui dipendono massimo comune divisore, fattorizzazione e potenze modulari.
Come viene trovato l’esponente minimo
Il calcolatore non prova tutti gli esponenti uno dopo l’altro. Innanzitutto fattorizza n quanto basta per calcolare la funzione phi di Eulero phi(n). Il teorema di Eulero garantisce che a elevato a phi(n) sia congruo a 1 quando gcd(a, n) è 1, dunque l’ordine cercato deve dividere phi(n). L’algoritmo fattorizza poi phi(n) e verifica ripetutamente se, dividendo il candidato corrente per uno dei suoi fattori primi, la potenza modulare rimane uguale a 1. Ogni volta che ciò avviene, il candidato più piccolo sostituisce il precedente. Quando non è più possibile eliminare alcun fattore primo, il candidato rimasto è l’ordine moltiplicativo. L’esponenziazione modulare usa l’elevamento al quadrato ripetuto, mantenendo i valori intermedi ridotti modulo n, e l’aritmetica intera resta sempre esatta. Questo metodo è molto più rapido della scansione di tutti gli esponenti positivi, soprattutto quando l’ordine è grande. Gli ingressi sono limitati a mille miliardi, così la fattorizzazione per tentativi ha un limite deterministico chiaro, adatto sia allo strumento nel browser sia alle chiamate API automatizzate.
Casi d'uso
Verificare un esercizio di teoria dei numeri
Confermi l’esponente minimo, la funzione phi di Eulero, il residuo ridotto e la congruenza finale senza elencare manualmente una lunga sequenza di potenze.
Studiare i sottogruppi ciclici
Misuri il sottogruppo generato da un residuo invertibile e confronti il suo ordine con phi(n) nello studio delle radici primitive.
Analizzare schemi modulari periodici
Trovi il periodo esatto della moltiplicazione ripetuta modulo n nei calcoli di ricorrenza, divisibilità e crittografia elementare.
Domande frequenti
Che cosa rappresenta il risultato dell’ordine moltiplicativo?
È il minimo intero positivo k per cui a^k è congruo a 1 modulo n.
Perché a e n devono essere coprimi?
Solo i residui per cui gcd(a, n) è uguale a 1 sono invertibili modulo n e possono avere un ordine moltiplicativo.
La base a può essere negativa?
Sì. Prima di calcolare l’ordine, il calcolatore riduce a al suo residuo non negativo modulo n.
L’ordine è sempre uguale alla funzione phi di Eulero phi(n)?
No. Per un ingresso valido, l’ordine divide sempre phi(n), ma coincide con phi(n) solo quando a genera l’intero gruppo delle unità modulo n.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Lo stesso calcolo deterministico è disponibile gratuitamente nel browser.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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)Esempio di richiesta
{
"a": 2,
"n": 9
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.multiplicative_order",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_abs | 1000000000000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |