Esponenziazione modulare
Elevi un numero a una potenza e tenga solo il resto: 2 alla 10 modulo 1000 dà 24, e 3 alla 5 modulo 13 dà 9. Ogni valore può avere fino a 2048 cifre e il risultato resta esatto. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Base intera
- 2
- Esponente intero non negativo
- 10
- Modulo intero positivo m
- 1000
- Risultato
- 24
L’esponenziazione modulare risponde con chiarezza a una domanda: quanto vale la base elevata a un esponente, ridotta modulo m? Quel resto è la spina dorsale di demo RSA giocattolo, esempi di lezione Diffie–Hellman, compiti di gare di programmazione e qualsiasi script che debba elevare interi grandi senza superare i limiti nativi.
Cosa calcola l’esponenziazione modulare
Dati interi base, exponent e modulo m, l’esponenziazione modulare restituisce il resto unico r nell’intervallo da 0 a m meno uno tale che la base alla potenza dell’esponente sia congruente a r modulo m. In simboli, r ≡ base^exponent (mod m). La potenza ingenua moltiplica la base per se stessa exponent volte e solo poi riduce, il che fa crescere intermedi enormi e fallisce su virgola mobile ordinaria o interi a larghezza fissa.
L’esponenziazione modulare rapida invece riduce dopo ogni moltiplicazione e eleva al quadrato la base corrente scansionando i bit dell’esponente dal meno al più significativo, così il lavoro scala con la lunghezza in bit dell’esponente e non con la sua magnitudine decimale. Quando m vale uno ogni intero è congruente a zero, quindi il risultato è sempre zero. Quando l’esponente è zero il risultato è uno per qualsiasi base purché m sia maggiore di uno, in linea con la convenzione usuale del prodotto vuoto.
Le basi negative sono prima ridotte al sistema di residui non negativi modulo m così la catena di moltiplicazioni non mescola mai resti con segno. Gli esponenti negativi sono rifiutati perché richiedono inversi modulari che possono non esistere e sono fuori ambito per questo calcolatore.
Limiti, prestazioni e dove si colloca
L’esponenziazione modulare binaria esegue un numero costante di moltiplicazioni modulari per bit dell’esponente, quindi raddoppiare l’esponente raddoppia grosso modo il lavoro mentre un modulo più grande aumenta il costo di ogni moltiplicazione. I docenti lo usano per verificare calcoli manuali di a^b mod m prima che gli studenti consegnino le dimostrazioni.
Gli sviluppatori lo collegano a test di proprietà che affermano che i protocolli restano nelle classi di residuo, a sistemi di giochi o ranking che piegano contatori grandi modulo un primo, e a pipeline di scripting che non devono reimplementare quadrato-e-moltiplica in ogni linguaggio.
Casi d'uso
Verificare risposte di gara e compiti a^b mod m
Studenti e coach possono controllare potenze modulari senza moltiplicare a mano intermedi enormi né fidarsi di una calcolatrice che perde silenziosamente precisione oltre 2^53.
Avviare demo crypto e test unitari di protocolli
Script che necessitano di un passo deterministico base^exp mod m per RSA giocattolo, Diffie–Hellman o asserzioni di classi di residuo possono chiamare questo invece di spedire la propria potenza BigInt.
Piegar grandi contatori in un intervallo di residuo fisso
Giochi, sistemi di ranking e aiuti di partizionamento che elevano un intero poi riducono modulo m ottengono un resto esatto senza sorprese di arrotondamento in virgola mobile.
Domande frequenti
Cos’è l’esponenziazione modulare?
È calcolare la base elevata a un esponente e prendere il resto modulo m, scritto base^exponent mod m. Questo calcolatore restituisce quel resto non negativo come result.
Perché un esponente negativo è rifiutato?
Gli esponenti negativi significano potenze reciproche e richiedono inversi modulari, che possono non esistere quando base e m non sono coprimi.
Come funziona il calcolatore di esponenziazione modulare?
Usa quadrato-e-moltiplica binario su BigInt: per ogni bit dell’esponente eleva al quadrato la base corrente modulo m e moltiplica nel risultato quando il bit è impostato.
Il calcolatore di esponenziazione modulare è gratuito?
Lo strumento del browser è gratuito e gira in locale.
Quanto possono essere grandi i numeri?
La base, la potenza e il modulo possono avere fino a 2048 cifre ciascuno. Bastano per problemi di gara, compiti e molte dimostrazioni di crittografia, con un risultato esatto e rapido.
Strumenti correlati
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/modular-exponentiation \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base":"2","exponent":"10","modulus":"1000"}'const res = await fetch("https://api.kit.forhosting.com/numth/modular-exponentiation", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base": "2",
"exponent": "10",
"modulus": "1000"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/modular-exponentiation",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base": "2",
"exponent": "10",
"modulus": "1000"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/modular-exponentiation", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base":"2","exponent":"10","modulus":"1000"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base":"2","exponent":"10","modulus":"1000"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/modular-exponentiation", 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
{
"base": "2",
"exponent": "10",
"modulus": "1000"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.modular_exponentiation",
"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_digits | 2048 |
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. |
Note tecniche
Questo calcolatore di esponenziazione modulare esegue quadrato-e-moltiplica binario su BigInt così la risposta resta esatta, deterministica e gratuita da provare nel Suo browser prima di chiamare lo stesso nucleo tramite l’API.
Cosa calcola l’esponenziazione modulare
Il modulo deve essere almeno uno; moduli zero o negativi non definiscono un resto non negativo standard e restituiscono invalid_input invece di inventare una risposta.
Come chiamare l’API e leggere il risultato
Invii un corpo JSON con tre campi obbligatori: base, exponent e modulus. Ciascuno può essere una stringa di intero decimale o un numero JSON; la forma stringa è preferita per valori oltre l’intervallo sicuro di interi di JavaScript. Sono accettati gli alias a per base, exp o e o power per exponent, e m o mod per modulus, così moduli e client scritti a mano condividono un solo contratto. In successo la risposta restituisce base, exponent e modulus come stringhe decimali normalizzate e aggiunge result come il resto non negativo di base^exponent mod modulus. Controlli classici: base 2, exponent 10, modulus 1000 produce result 24; base 3, exponent 5, modulus 13 produce 9; base 7, exponent 0, modulus 5 produce 1. Validazione fallita — campi mancanti, non interi, frazioni, modulus sotto uno, esponente negativo, o valore più lungo del limite di cifre pubblicato — restituisce invalid_input e non viene mai addebitata. Il prezzo è un $0.002 fisso per richiesta riuscita (voce unitaria a prezzo marginale zero).
Limiti, prestazioni e dove si colloca
Questa capacità limita base, exponent e modulus a 2048 cifre decimali ciascuno — abbastanza per problemi di gara, compiti e molte demo a scala crittografica — ma abbastanza piccolo da mantenere interattivo il BigInt puro in Worker senza avviare uno stack multiprecisione pesante. Se Le servono moduli da un milione di cifre, scomposizioni con il teorema cinese del resto o primitive crypto a tempo costante, Le serve una libreria dedicata; questo strumento leggero di parse è intenzionalmente la calcolatrice e il passo API condivisi per potenze modulari esatte. Lo abbini a strumenti separati di fattorizzazione o inversa quando un flusso richiede il kit modulare completo; questo endpoint risponde solo alla domanda potenzia-e-riduci così l’intento di ricerca resta chiaro e la risposta minima.
Domande tecniche
Cosa succede se il modulo è minore di 1?
Il modulo deve essere almeno 1. Moduli zero o negativi non definiscono il resto non negativo standard usato qui e restituiscono invalid_input.