Calcolatore passo del bambino-passo del gigante
2 elevato alla 9 dà resto 5 nella divisione per 13, quindi il logaritmo discreto di 5 in base 2 modulo 13 è 9. Inserisca una base, un obiettivo e un modulo, primo o composto, per trovare l'esponente. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- G
- 2
- H
- 5
- N
- 13
- X
- 9
- Equazione
- 2^9 ≡ 5 (mod 13)
Questo calcolatore passo del bambino-passo del gigante trova un esponente non negativo x per cui g elevato a x è congruente a h modulo n. Diversamente dai risolutori limitati ai campi primi, gestisce anche moduli composti e basi non coprime mediante una riduzione preliminare. Il risultato comprende residui normalizzati e un’equazione di verifica leggibile. Se il bersaglio non è raggiungibile dal generatore indicato, la richiesta restituisce un errore chiaro anziché un risultato vuoto e ambiguo.
Descriva con precisione l’equazione modulare
Fornisca tre interi: g è il generatore o la base, h è il bersaglio e n è il modulo. Il calcolatore cerca un x non negativo che soddisfi g^x congruente a h modulo n. Sono ammesse basi e destinazioni negative, poi normalizzate nell’intervallo standard da zero a n meno uno.
La risposta riporta tali valori normalizzati, così Lei può controllare l’equazione esatta anche se l’input originale era fuori intervallo. Il modulo deve essere almeno due e può essere primo o composto entro il limite pubblicato. L’esponente zero viene esaminato per primo, secondo la convenzione usuale per cui g^0 vale uno modulo n.
Un bersaglio congruente a uno produce quindi immediatamente x uguale a zero. La risposta positiva contiene x, gli operandi normalizzati, il nome del metodo e un’equazione di verifica leggibile. Il formato è adatto sia al controllo manuale sia alle asserzioni automatiche, senza obbligare ogni applicazione client a ricostruire il testo.
Comprenda i passi piccoli e quelli giganti
Una ricerca diretta prova gli esponenti consecutivi e può richiedere un numero di moltiplicazioni modulari proporzionale al modulo. Il metodo passo del bambino-passo del gigante scambia memoria con velocità. Sceglie una larghezza vicina alla radice quadrata dell’intervallo, registra le piccole potenze consecutive della base e poi attraversa il bersaglio con salti di quella larghezza.
Una corrispondenza tra residui combina i due indici e ricava l’esponente. La tabella e il numero di salti hanno quindi ordine pari alla radice quadrata di n. Questa implementazione è deterministica: non campiona candidati, non dipende da semi casuali, non contatta servizi e non usa l’orologio.
Per input non coprimi applica prima la forma estesa. I divisori comuni vengono eliminati uno alla volta conservando uno scostamento dell’esponente e un moltiplicatore. Se un divisore rende irraggiungibile il bersaglio, l’equazione viene respinta subito.
Quando la base ridotta è invertibile, parte la ricerca nella tabella e viene aggiunto lo scostamento finale. Il candidato restituito viene infine controllato in modo indipendente con l’esponenziazione modulare.
Limiti e casi senza soluzione
Un logaritmo discreto non esiste necessariamente. Le potenze di g possono visitare soltanto una parte dei residui modulo n, lasciando h fuori dalla sequenza generata. È una scelta intenzionale, utile nelle procedure in cui tale assenza deve fermare il passaggio successivo: Lei può gestire il codice standard senza cercare campi nulli.
Interi malformati, campi mancanti e un modulo fuori dai limiti producono la stessa categoria con messaggi più specifici. Il costo computazionale cresce con la radice quadrata del modulo ridotto, poiché l’algoritmo crea una tabella in memoria; il limite impedisce allocazioni impreviste e rende finita l’esecuzione. Usi parametri contenuti per didattica, vettori di prova, enigmi e diagnostica.
Lo strumento non recupera segreti da gruppi crittografici reali, volutamente molto più grandi.
Casi d'uso
Verificare esercizi di aritmetica modulare
Controlli un’equazione didattica e riceva l’esponente con una congruenza leggibile da sostituire nel problema.
Creare vettori di prova deterministici
Generi risposte note per codice di esponenziazione modulare, anche con moduli composti e fattori condivisi.
Domande frequenti
Il modulo deve essere primo?
No. La riduzione estesa gestisce moduli primi e composti, compresi molti casi in cui g e n condividono un fattore.
Quale esponente viene restituito?
Il risolutore cerca esponenti non negativi, considera esplicitamente lo zero e restituisce una soluzione verificata con BSGS.
Perché esiste un limite per il modulo?
Il metodo usa memoria e tempo proporzionali alla radice quadrata. Il limite rende prevedibili tabella ed esecuzione.
Cosa succede se non esiste alcun esponente?
Le potenze della base possono raggiungere solo una parte dei resti modulo n, quindi l'obiettivo può restare fuori portata. In quel caso riceve un messaggio chiaro che nessun esponente esiste, invece di una risposta vuota o fuorviante.
Perché è più veloce che provare gli esponenti uno per uno?
Una ricerca diretta può richiedere tanti passi quanto è grande il modulo. Questo metodo conserva una tabella di piccole potenze e poi avanza a grandi salti, così entrambe le parti costano circa la radice quadrata di n.
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/baby-step-giant-step \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"g":2,"h":5,"n":13}'const res = await fetch("https://api.kit.forhosting.com/numth/baby-step-giant-step", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"g": 2,
"h": 5,
"n": 13
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/baby-step-giant-step",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"g": 2,
"h": 5,
"n": 13
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/baby-step-giant-step", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"g":2,"h":5,"n":13}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"g":2,"h":5,"n":13}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/baby-step-giant-step", 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
{
"g": 2,
"h": 5,
"n": 13
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.baby_step_giant_step",
"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_n | 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. |
Note tecniche
Descriva con precisione l’equazione modulare
I dati possono essere interi JSON oppure stringhe di cifre, soluzione utile quando un linguaggio client non rappresenta comodamente un valore.
Gestisca limiti, errori e utilizzo dell’API
In tal caso la capacità solleva un errore invalid_input con un messaggio che dichiara l’assenza dell’esponente. Il browser usa lo stesso risolutore puro dell’API. Ogni elemento automatizzato costa $0.002, senza aritmetica dipendente dalla rete né risultati casuali.
Casi di integrazione
Rilevare bersagli irraggiungibili
Usi l’errore standard invalid_input per fermare un flusso quando il bersaglio non appartiene alla sequenza di potenze di g.
Domande tecniche
Che cosa accade se il logaritmo discreto non esiste?
La chiamata fallisce con invalid_input e un messaggio che segnala l’assenza di un esponente per i valori forniti.
Quanto costa una chiamata API?
Ogni elemento costa $0.002. Lo strumento nel browser usa la stessa libreria pura per i calcoli interattivi.