Calcolatore radice primitiva
Trova la più piccola radice primitiva di un primo: modulo 7 è 3, le cui potenze percorrono i sei resti diversi da zero, mentre quelle di 2 si ripetono dopo tre. Vede anche p − 1 scomposto in potenze di primi. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Potenza (W)
- 7
- Radice primitiva
- 3
- Ordine
- 6
- Cifre massime
- 15
Una radice primitiva modulo un primo p è un generatore del gruppo moltiplicativo dei residui diversi da zero modulo p. In termini semplici, qualche intero g tra 1 e p meno uno ha la proprietà che le sue potenze successive g, g al quadrato, g al cubo, e così via, alla fine toccano ogni classe di resto coprima con p prima di ripetersi. Quel g è un generatore di (Z/pZ)*, e il più piccolo g positivo di questo tipo è la classica risposta di teoria dei numeri che studenti, crittografi e risolutori di gare cercano. Questo calcolatore prende un modulo primo p, verifica che p sia primo, fattorizza p meno uno, e restituisce la radice primitiva minima insieme all'ordine del gruppo e alla fattorizzazione in potenze prime di p meno uno. Il percorso è completamente deterministico: Miller-Rabin con insiemi di testimoni fissi, fattorizzazione per tentativi ed esponenziazione modulare senza rete, senza casualità e senza dipendenza dalla data.
Cos'è una radice primitiva e cosa contiene la risposta
Per un modulo primo p, l'insieme dei residui 1, 2, …, p meno uno forma un gruppo moltiplicativo ciclico di ordine p meno uno. Un intero g è una radice primitiva modulo p quando l'ordine di g in quel gruppo è esattamente p meno uno: le potenze g elevato a k per k da 0 fino a p meno due sono tutte distinte modulo p ed esauriscono ogni resto diverso da zero.
Non ogni intero è un generatore; per esempio modulo 7 le potenze di 2 ciclano solo attraverso tre valori prima di ripetersi, quindi 2 non è una radice primitiva, mentre 3 genera tutte e sei le unità ed è la più piccola. Non c'è alcuna congettura probabilistica presentata come radice e nessun ripiego silenzioso per moduli composti, perché una radice primitiva in senso classico è definita per i primi (e alcune famiglie composte speciali che questa pagina non copre).
Se ti servono i fattori di un intero arbitrario invece di un generatore mod p, usa invece una capacità di fattorizzazione; questa pagina risponde solo alla domanda sul generatore minimo mod primo.
Come viene verificato il primo e come si trova la radice minima
Il segno più iniziale opzionale è ammesso; spazi incorporati, prefissi esadecimali e notazione esponenziale vengono respinti con un messaggio chiaro, così che una cella sbagliata non diventi un generatore errato. Dopo l'interpretazione, il motore esegue un test di primalità Miller-Rabin deterministico con insiemi di testimoni dimostrati sufficienti per ogni intero fino a quindici cifre decimali.
Quando p è primo, il motore fattorizza p meno uno tramite divisione per tentativi con ruota, raccoglie i fattori primi distinti q di quell'ordine, e cerca g uguale a 2, 3, 4, … per il primo candidato tale che g elevato a (p meno uno) diviso q non sia congruo a 1 modulo p per ogni tale q. Quel criterio classico è necessario e sufficiente affinché g abbia ordine p meno uno. Il caso speciale p uguale a 2 restituisce radice primitiva 1, l'unica unità in quel gruppo.
Dove si usano le radici primitive minime nello studio, nella crittografia e nel codice
Gli studenti incontrano le radici primitive quando imparano i gruppi ciclici, i logaritmi discreti e la struttura dei campi finiti di ordine primo. Le schede di esercizi spesso chiedono il generatore minimo modulo un piccolo primo; questa pagina restituisce quella risposta con la fattorizzazione di supporto di p meno uno così puoi verificare a mano i test dell'ordine.
I problemi di gara e gli enunciati di kata di programmazione richiedono spesso la radice primitiva minima come subroutine per costruire polinomi primitivi, indicizzare tabelle di logaritmo discreto o inizializzare dimostrazioni di teoria dei numeri.
Nella crittografia applicata, Diffie-Hellman e costruzioni correlate hanno bisogno di un generatore di un grande sottogruppo di ordine primo; mentre i sistemi di produzione usano primi sicuri accuratamente scelti e generatori standardizzati, un calcolatore trasparente per primi ordinari è comunque utile quando validi parametri su scala da compiti a casa, scrivi test unitari per helper dell'ordine modulare, o spieghi perché g uguale a 2 funziona per alcuni primi e non per altri.
Casi d'uso
Compiti a casa e preparazione a gare
Cerca la radice primitiva minima modulo un primo per esercizi del manuale, esercizi di logaritmo discreto e gare di programmazione che richiedono il generatore minimo.
Test deterministici di parametri crittografici
Genera generatori riproducibili per test unitari dell'ordine modulare, dimostrazioni Diffie-Hellman su primi giocattolo e asserzioni CI senza incorporare tabelle statiche.
Insegnare i gruppi ciclici
Mostra che le potenze della radice restituita esauriscono (Z/pZ)* e confronta con non-generatori usando la fattorizzazione di p−1 nella risposta.
Domande frequenti
Cosa succede se p non è primo?
Le radici primitive classiche in questo senso sono definite per moduli primi; n composto è fuori portata.
L'algoritmo è randomizzato?
No. La primalità usa insiemi di testimoni Miller-Rabin deterministici, la fattorizzazione è per divisione per tentativi, e le potenze modulari sono esatte. Lo stesso p produce sempre la stessa radice.
Qual è il primo più grande che posso inviare?
p può avere al massimo 15 cifre decimali. Valori più grandi falliscono con un messaggio chiaro che il limite di cifre è stato superato.
Perché vengono mostrati i fattori primi di p − 1?
Sono ciò che usa la verifica. Un candidato g è radice primitiva quando g elevato a (p − 1) diviso q non dà 1 modulo p per nessun primo q che divide p − 1, quindi con essi può rifare il controllo.
Che cosa indica l'ordine del gruppo?
È p − 1, cioè quanti resti diversi da zero esistono modulo p. Per 7 l'ordine è 6, e una radice primitiva deve toccare tutti e 6 quei resti prima di ripetersi.
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/primitive-root \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"p":"7"}'const res = await fetch("https://api.kit.forhosting.com/numth/primitive-root", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"p": "7"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/primitive-root",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"p": "7"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/primitive-root", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"p":"7"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"p":"7"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/primitive-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
{
"p": "7"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.primitive_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.
Limiti
max_digits | 15 |
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
Cos'è una radice primitiva e cosa contiene la risposta
Questo strumento restituisce il primo p come stringa decimale, la più piccola radice primitiva, l'ordine del gruppo p meno uno, un flag booleano is_prime che è sempre true in caso di successo, i fattori in potenze prime ordinati di p meno uno usati nei test dell'ordine, e il limite max_digits pubblicato così i client possono validare prima di un lotto. Le modalità di fallimento sono esplicite: p mancante, valori non interi, frazioni, notazione scientifica, valori sotto due, valori con più di quindici cifre e p composto generano tutti invalid_input.
Come viene verificato il primo e come si trova la radice minima
Il campo preferito è p come intero JSON o stringa decimale; sono accettati anche gli alias prime, modulus e n, così che moduli, stringhe di query e fogli di calcolo possano riusare lo stesso contratto. Se il test fallisce, la risposta è invalid_input che indica che p non è primo.
Dove si usano le radici primitive minime nello studio, nella crittografia e nel codice
In questa pagina il lavoro gira interamente nel tuo browser; tramite l'API ogni ricerca riuscita costa $0.002, la validazione fallita non viene addebitata e nulla viene conservato dopo la restituzione della risposta. Questa distinzione — esplorazione interattiva gratuita e API a pagamento identica — corrisponde al resto del catalogo tier A del KIT e ti permette di passare da una dimostrazione in classe a una pipeline automatizzata senza cambiare il risultato matematico.
Domande tecniche
Quanto costa il calcolatore di radice primitiva?
È gratuito nel browser su questa pagina. Tramite l'API una richiesta riuscita costa $0.002; gli input non validi non vengono addebitati.
Il risultato è sempre la radice primitiva più piccola?
Sì. Il motore cerca g = 2, 3, 4, … e restituisce il primo generatore, così la radice è minima tra i residui positivi.