ForHosting KIT · Matematica

Radice quadrata modulare di Cipolla

L’algoritmo di Cipolla Le fornisce la radice quadrata vera e propria modulo un primo dispari, non solo un sì o un no: per 2 modulo 7 restituisce 3 e 4, perché 3 al quadrato fa 9, cioè 2 modulo 7. Gratis nel suo browser.

  • Gratis
  • Funziona nel suo browser
  • Senza registrazione
  • I suoi dati restano sul dispositivo
Usalo da WebAPIEmailTelegramApp presto
Se inserisce
A
2
Potenza (W)
7
Ottiene
A modulo
2
Radici
3, 4
Radice
3
Omega
0

L'algoritmo di Cipolla è un metodo classico della teoria dei numeri per estrarre radici quadrate modulo un primo dispari. Dati un intero a e un primo dispari p, restituisce un intero x tale che x al quadrato sia congruente ad a modulo p quando a è un residuo quadratico. I compiti di crittografia, la programmazione competitiva e i tutorial di aritmetica modulare spesso necessitano della radice esplicita — non solo del test sì o no di residualità del simbolo di Legendre.

Cos'è una radice quadrata modulare e quando si applica Cipolla

Nell'aritmetica modulare la congruenza x al quadrato congruente ad a modulo p chiede un intero x il cui quadrato cada nella stessa classe di residuo di a. Quando p è un primo dispari la risposta teorica è nitida: o a è divisibile per p e l'unica radice è zero, oppure esattamente metà delle classi non nulle sono residui quadratici e ogni residuo ha esattamente due radici r e p meno r. Il simbolo di Legendre indica in quale caso si trova, ma non costruisce r.

L'algoritmo di Cipolla colma quel divario lavorando in un'estensione quadratica scelta del campo con p elementi. Si sceglie un intero ausiliario omega tale che omega al quadrato meno a sia un non residuo quadratico modulo p; allora l'elemento omega più una radice quadrata formale di quel non residuo, elevato alla potenza (p più uno) divisa per due, ricade nel campo base e uguaglia una radice quadrata di a. Fallisce anche quando p è composto o pari, perché l'algoritmo classico e il criterio di Eulero assumono un modulo primo dispari.

Rispetto a Tonelli–Shanks, Cipolla è spesso più breve da implementare per demo didattiche e primi di media dimensione, e non richiede di fattorizzare p meno uno. Questa capacità si rivolge quindi a studenti, docenti e script che vogliono un percorso Cipolla trasparente con radici ordinate stabili e un contratto di errore documentato.

Dove le radici quadrate modulari di Cipolla creano valore

Le piattaforme di contest e i correttori LMS necessitano di un oracolo deterministico che rifiuti non residui e moduli composti invece di restituire array vuoti che un client difettoso potrebbe trattare come successo. Le note di crittografia che introducono la cifratura Rabin o la decompressione di punti su campi primi spesso vogliono un percorso Cipolla accanto a Tonelli–Shanks; un modulo puro condiviso mantiene identiche demo del browser e controlli del server.

Mantenga p entro il limite primo pubblicato, fissi l'array di radici ordinate nei test, e ottiene radici quadrate modulari riproducibili per didattica, automazione e edge workers senza incorporare un intero stack di algebra computazionale.

Aule e compiti di teoria dei numeri

Gli studenti inviano a e un primo dispari p e confrontano le radici ordinate restituite con i passi di Cipolla fatti a mano o con le tabelle del libro di testo.

Demo didattiche di cripto e notebook

Illustri Cipolla accanto ai controlli di Legendre in note in stile Rabin o di curve ellittiche senza importare una libreria algebrica pesante.

Come si calcola una radice quadrata modulare con l'algoritmo di Cipolla?

Invii interi a e un primo dispari p.

Cosa succede se a non è un residuo quadratico modulo p?

Nessuna radice viene inventata e la chiamata non viene addebitata.

Perché p deve essere un primo dispari?

L'algoritmo di Cipolla e il criterio di Eulero sono definiti per i primi dispari. I moduli pari o composti sono rifiutati affinché la risposta non pretenda mai che un campo non primo si comporti come F_p.

In che modo differisce da un calcolatore del simbolo di Legendre?

Legendre riporta solo la residualità (−1, 0 o 1). Questa capacità costruisce le radici quadrate esplicite quando esistono, usando la potenza nel campo di estensione di Cipolla.

Che differenza c’è tra l’algoritmo di Cipolla e quello di Tonelli–Shanks?

Entrambi trovano le stesse radici. Quello di Cipolla è spesso più breve da seguire in aula e non richiede di fattorizzare p meno uno: lavora in un’estensione del campo con p elementi ed eleva un elemento alla potenza p più uno diviso due.

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.

POSThttps://api.kit.forhosting.com/numth/cipolla-algorithm

Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.

curl -X POST https://api.kit.forhosting.com/numth/cipolla-algorithm \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"a":2,"p":7}'
{
  "a": 2,
  "p": 7
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "numth.cipolla_algorithm",
  "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.

per richiesta$0.002

Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.

HTTPCodiceSignificato
401unauthorizedChiave API mancante o non valida: controlla l'header Authorization.
402insufficient_balanceCredito esaurito: ricarica per continuare a eseguire attività.
404unknown_typeTipo di attività sconosciuto: controlla il campo type della richiesta.
429rate_limitedTroppe richieste in poco tempo: rallenta e riprova tra qualche secondo.

Questa capacità verifica che p sia un primo dispari, rifiuta i non residui con un errore invalid_input chiaro, esegue una costruzione di Cipolla completamente deterministica (senza estrazioni casuali di omega) e restituisce entrambe le radici quando esistono.

Cos'è una radice quadrata modulare e quando si applica Cipolla

La costruzione fallisce proprio quando a è un non residuo, cosa che questo endpoint segnala come invalid_input anziché inventare una radice finta.

Contratto di ingresso, passi dell'algoritmo e forma della risposta

Il valore assoluto di a non deve superare un bilione. Poi moltiplica nell'anello degli elementi x più y volte radice di w, elevando omega più radice di w alla potenza (p più uno) su due con moltiplicazioni modulari esatte BigInt. Esempio: a uguale a due e p uguale a sette produce le radici tre e quattro, perché tre al quadrato è nove, cioè due modulo sette. Invii un corpo JSON con due campi interi obbligatori: a, il numero di cui vuole la radice quadrata modulo p, e p, un primo dispari tra tre e un bilione inclusi. Ogni campo può arrivare come numero JSON o come stringa di cifre con segno opzionale. Campi mancanti, non interi, fuori intervallo, p pari e p composto falliscono con invalid_input e non vengono addebitati. Se a_mod è zero la risposta è la radice banale zero con method trivial_zero e omega null. Altrimenti il simbolo di Legendre di a_mod modulo p è calcolato via criterio di Eulero; il valore meno uno significa che a è un non residuo quadratico e l'attività fallisce con un messaggio che nomina la classe di residuo. Quando il simbolo è più uno l'algoritmo cerca il più piccolo omega non negativo tale che il Legendre di omega al quadrato meno a_mod sia meno uno — questa scansione è deterministica, quindi la stessa coppia usa sempre lo stesso testimone. La componente nel campo è una radice quadrata; l'API restituisce entrambe le radici ordinate, la radice primaria minore preferita, il testimone omega, method uguale a cipolla e verified true dopo un controllo interno del quadrato.

Dove le radici quadrate modulari di Cipolla creano valore

Le aule che trattano i residui quadratici possono mostrare che la residualità da sola non basta e poi chiamare questo endpoint per esibire le radici reali di molti residui senza calcolare a mano potenze nel campo di estensione. I notebook di ricerca che già calcolano simboli di Legendre o Jacobi possono richiedere la radice solo quando il simbolo è uno, pagando $0.002 per elemento riuscito e nulla in caso di fallimenti di validazione.

Programmazione competitiva e correzione LMS

I correttori verificano le risposte di radice quadrata modulare, rifiutano non residui e moduli composti con invalid_input e mantengono omega deterministico tra le esecuzioni.

Quanto costa lo strumento di radice quadrata modulare di Cipolla?

Lo strumento nel browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l'input non valido non viene addebitato.

Leggi la documentazione completa del KIT →