Radice n-esima modulare
Trovi tutte le radici k-esime di un numero modulo un primo: le radici quadrate di 2 modulo 17 sono 6 e 11, in ordine. Se non ne esiste nessuna riceve una risposta chiara invece di un elenco vuoto. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- A
- 2
- K
- 2
- Potenza (W)
- 17
- A modulo
- 2
- Numero di radici
- 2
- Radici
- 6, 11
- MCD di k e φ
- 2
Una radice k-esima modulare di un intero a modulo un primo p è ogni residuo x tale che x elevato a k sia congruente ad a modulo p. Le radici quadrate modulo primi compaiono nei tutorial di Tonelli–Shanks, le radici cubiche e di ordine superiore nell’algebra dei campi finiti, e i corsi di crittografia necessitano di un oracolo affidabile che elenchi ogni radice oppure rifiuti con chiarezza quando nessuna esiste. Questo calcolatore accetta a, un esponente positivo k e un modulo primo p, riduce a nell’intervallo canonico da zero a p meno uno e restituisce l’elenco ordinato completo delle soluzioni in quel campo.
Cosa sono le radici k-esime modulari e quando esistono
Nel gruppo moltiplicativo di un campo primo ogni residuo non nullo ha un ordine ben definito che divide p meno uno. Elevare x alla k produce una mappa la cui immagine è l’insieme dei residui potenza k-esima. Per un obiettivo a non nullo la congruenza x alla k congruente ad a modulo p ha soluzioni se e solo se a elevato a (p meno uno) diviso d è congruente a uno, dove d è il massimo comun divisore di k e p meno uno.
Quando il criterio vale ci sono esattamente d radici non nulle distinte. Il residuo zero è speciale: zero a ogni potenza positiva è zero, quindi a congruente a zero ha la sola radice zero. I moduli composti escono da questo quadro di gruppo ciclico e vengono rifiutati affinché il solver non finga mai che un prodotto tramite il teorema cinese del resto sia una risposta di campo primo.
Gli studenti incontrano le radici quadrate controllando a mano i simboli di Legendre, le radici di ordine superiore studiando coset ciclotomici o logaritmi discreti, e i fallimenti di esistenza quando un compito chiede la radice cubica di un non residuo cubico.
Come questo calcolatore trova ogni radice
Chiami la capacità con i campi interi a, k e p. L’implementazione verifica prima che k sia un intero positivo e che p sia un primo entro il limite pubblicato mediante un test di Miller–Rabin deterministico. Dopo aver ridotto a modulo p, il caso di residuo zero restituisce la sola radice zero.
Per a non nullo calcola d uguale all’mcd di k e p meno uno e applica il test di esistenza sopra. Quando d vale uno c’è un’unica radice ottenuta elevando a all’inverso modulare di k modulo p meno uno, il percorso veloce per esponenti coprimi. Quando d è maggiore di uno il solver trova una radice primitiva g modulo p, recupera il logaritmo discreto di a in base g con baby-step giant-step e risolve la congruenza lineare k per y congruente a quel logaritmo modulo p meno uno.
Ogni radice restituita è verificata mediante esponenziazione modulare prima dell’emissione della risposta. I valori assoluti di a e k sono limitati a un bilione e il primo p vicino a un miliardo affinché la memoria di baby-step giant-step resti pratica; se d superasse diecimila radici la richiesta viene rifiutata anziché inondare il client.
Casi d'uso
Crittografia e laboratori di campi finiti
Docenti e studenti possono elencare ogni radice quadrata o di ordine superiore modulo un primo piccolo, verificare i criteri di esistenza e ispezionare gcd(k, p−1) quando un residuo di esempio non ha radice k-esima.
Programmazione competitiva e algebra modulare
I programmatori competitivi possono confrontare le soluzioni di x^k ≡ a (mod p) con un oracolo deterministico invece di Tonelli–Shanks artigianali o cicli a forza bruta.
Domande frequenti
E se non esiste una radice k-esima?
Un elenco vuoto di successo non viene mai restituito in caso di non esistenza.
Quali algoritmi usa il calcolatore di radice n-esima modulare?
Miller–Rabin per la primalità, esponenti con inverso modulare quando gcd(k,p−1)=1; altrimenti radice primitiva, logaritmo discreto baby-step giant-step e risoluzione di congruenze lineari. Tutti i percorsi sono deterministici.
Il calcolatore di radice n-esima modulare è gratuito?
Lo strumento del browser gira gratis sul Suo dispositivo.
Quali sono le radici quadrate di 2 modulo 17?
Sono 6 e 11. Elevando l'una o l'altra al quadrato e dividendo per 17 resta 2. Il calcolatore le mostra in ordine crescente insieme al numero di radici.
Quante radici possono esserci?
Quando esistono, sono esattamente tante quanto il massimo comune divisore tra k e p − 1: due radici quadrate di 2 modulo 17. Lo zero ha come unica radice lo zero, e oltre diecimila radici la richiesta viene rifiutata.
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-nth-root \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":2,"k":2,"p":17}'const res = await fetch("https://api.kit.forhosting.com/numth/modular-nth-root", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 2,
"k": 2,
"p": 17
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/modular-nth-root",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 2,
"k": 2,
"p": 17
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/modular-nth-root", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":2,"k":2,"p":17}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":2,"k":2,"p":17}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/modular-nth-root", 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,
"k": 2,
"p": 17
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.modular_nth_root",
"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.
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
Quando p è composto la richiesta fallisce con invalid_input; quando il criterio di esistenza a elevato a (p meno uno) su mcd di k e p meno uno non è uno modulo p, la richiesta fallisce allo stesso modo invece di restituire un elenco vuoto di successo. Lo stesso modulo puro e deterministico alimenta lo strumento gratuito del browser e il percorso API prepagato, così le demo in aula e i correttori automatici non discordano mai su una radice.
Cosa sono le radici k-esime modulari e quando esistono
Restituire invalid_input rigoroso in caso di non esistenza rispecchia il linguaggio dei testi di teoria dei numeri che dicono nessuna soluzione, piuttosto che un elenco vuoto che un sistema di fatturazione potrebbe trattare come successo.
Come questo calcolatore trova ogni radice
Ogni soluzione y produce una radice g alla y e le radici distinte sono ordinate in modo crescente per un contratto API stabile.
Uso pratico, limiti, prezzo e consegna
Usi lo strumento del browser quando desidera ogni radice quadrata o di ordine superiore leggendo una nota di crittografia, controllando l’output di programmazione competitiva o valutando un compito su campi finiti. Gli input accettati sono interi a con valore assoluto al massimo un bilione, esponenti k da uno a un bilione e primi p da due fino a circa un miliardo, soggetti al tetto di sicurezza sul numero di radici. Usi l’API quando uno script, un plugin LMS o un notebook di ricerca necessita di molte interrogazioni di radici modulari senza incorporare Tonelli–Shanks o un logaritmo discreto. Ogni richiesta riuscita è un elemento fatturabile a $0.002; i fallimenti di validazione, i moduli composti e la non esistenza dimostrata non consumano saldo. La risposta restituisce a, k, p, l’a_mod ridotto, root_count, l’array roots crescente, gcd_k_phi uguale a d, una stringa di equazione per la visualizzazione e un tag method che indica il percorso algoritmico. Colleghi l’endpoint a sandbox di crittografia, ausili di programmazione competitiva e demo di teoria algebrica dei numeri che preferiscono già l’aritmetica modulare esatta alle approssimazioni in virgola mobile. Poiché l’unità è un singolo elemento e il motore è parse puro, la latenza resta bassa e il canale web gratuito rispecchia l’API a pagamento senza un secondo percorso di codice che possa divergere.
Casi di integrazione
Correttori di compiti e notebook di ricerca
Correttori automatici e script possono confermare gli insiemi di radici, rifiutare moduli composti via invalid_input e mantenere ogni prodotto intermedio entro i limiti documentati.
Domande tecniche
Come si calcolano radici k-esime modulari con questa API?
Invii JSON con i campi interi a, k (≥ 1) e il primo p a numth.modular_nth_root. In caso di successo la risposta restituisce roots come array crescente, root_count, a_mod e gcd_k_phi.
Cosa succede se p non è primo?
La richiesta fallisce con invalid_input. Questo calcolatore richiede un modulo primo affinché il gruppo moltiplicativo sia ciclico e il criterio di esistenza sia esatto. La validazione fallita non viene addebitata.