Tutte le radici primitive modulo n
Questo calcolatore di tutte le radici primitive modulo n restituisce l’insieme completo e ordinato dei generatori del gruppo moltiplicativo delle unità modulo un intero n.
Esegui gratis nel browser
Prima stabilisce se il modulo appartiene a una famiglia che ammette radici primitive, quindi calcola la funzione phi di Eulero, trova un generatore e ricava tutti gli altri. La risposta comprende modulo, valore phi, quantità e lista completa delle radici. Valori inferiori a due e moduli privi di radici primitive producono un errore chiaro. La stessa aritmetica deterministica consente controlli rapidi e automazione riproducibile via API al costo di $0.002 per richiesta riuscita.
Significato dell’elenco completo delle radici primitive
Una radice primitiva modulo n è un residuo le cui potenze successive generano ogni classe invertibile modulo n. La parola fondamentale è «ogni»: un numero può essere coprimo con n e percorrere soltanto un sottogruppo proprio, quindi essere un’unità è necessario ma non sufficiente. Questa capacità restituisce tutti i rappresentanti positivi tra 1 e n meno 1 con ordine moltiplicativo esattamente phi(n). Per il modulo 14, per esempio, il gruppo delle unità contiene sei elementi e l’insieme completo dei generatori comprende due residui. La risposta indica n, la funzione phi di Eulero, il numero di radici primitive e l’array primitive_roots ordinato numericamente. Il conteggio offre un controllo utile: quando esistono radici primitive, il loro numero è phi(phi(n)). Il caso speciale 2 possiede correttamente la sola radice 1. Un modulo senza un generatore dell’intero gruppo viene rifiutato esplicitamente; un elenco vuoto nasconderebbe invece che il gruppo non è ciclico.
Come vengono verificate esistenza e generatori
Le radici primitive non esistono per ogni modulo. Il teorema di classificazione afferma che il gruppo moltiplicativo modulo n è ciclico esattamente quando n è 2, 4, una potenza di un primo dispari oppure il doppio di tale potenza. Il calcolatore fattorizza n e controlla questa condizione strutturale prima della ricerca. Per un modulo ammesso calcola phi(n), fattorizza l’ordine del gruppo e verifica le unità candidate con l’esponenziazione modulare. Un candidato g ha ordine pieno phi(n) se, per ogni divisore primo distinto q di phi(n), g elevato a phi(n) diviso q non è congruo a 1 modulo n. Trovato un g, tutte le radici sono le potenze g elevato a k con k coprimo con phi(n). L’implementazione enumera tali esponenti, calcola residui esatti e ordina il risultato. Non usa casualità, tabelle esterne, rete o ora corrente; lo stesso input genera sempre lo stesso contenuto numerico.
Uso del risultato in matematica e nel software
Gli elenchi completi servono quando un problema richiede più della minima radice primitiva. Gli studenti possono confrontare i residui restituiti con tabelle di potenze compilate a mano e capire perché il numero dei generatori è phi(phi(n)). I docenti possono preparare soluzioni che includano ogni risposta valida. Chi sviluppa software può generare fixture per routine sull’ordine moltiplicativo, verificare codice di enumerazione o selezionare fra più generatori secondo una regola applicativa separata. Anche gli errori sono istruttivi: provare i moduli 8 o 15 mostra che molti numeri composti comuni hanno gruppi di unità non ciclici pur contenendo numerosi residui invertibili. L’input è limitato a 10,000 perché la risposta richiesta è esaustiva e può contenere molte radici; il limite rende prevedibili rendering, dimensione dell’API e tempo di esecuzione. Inserisca n come intero o stringa decimale semplice. Ogni richiesta riuscita costa $0.002; gli input non supportati o malformati vengono segnalati chiaramente.
Casi d'uso
Verificare un esercizio di teoria dei numeri
Confronti un calcolo manuale con l’insieme completo e ordinato dei generatori modulo n.
Generare fixture di test deterministiche
Crei valori attesi esatti per codice che calcola ordini moltiplicativi o gruppi ciclici di unità.
Insegnare gruppi di unità ciclici e non ciclici
Confronti moduli ammessi e valori senza radice primitiva, illustrando il teorema di classificazione.
Domande frequenti
Quanto costa una richiesta API?
Una richiesta API riuscita costa $0.002. Un input non valido restituisce un errore anziché un elenco di radici.
Quali moduli possiedono radici primitive?
Esattamente 2, 4, le potenze di primi dispari e il doppio di tali potenze. Gli altri sono rifiutati perché i relativi gruppi di unità non sono ciclici.
Perché un residuo coprimo può non essere una radice primitiva?
La coprimalità rende il residuo soltanto un’unità. Una radice primitiva deve inoltre avere l’ordine moltiplicativo massimo phi(n).
Quante radici primitive deve contenere il risultato?
Quando esistono, il loro numero è phi(phi(n)). La risposta riporta il conteggio calcolato insieme all’array.
Perché n è limitato a 10,000?
L’output elenca ogni generatore e quindi cresce con n. Il limite mantiene prevedibili il calcolo esaustivo e la dimensione della risposta.
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/all-primitive-roots \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":14}'const res = await fetch("https://api.kit.forhosting.com/numth/all-primitive-roots", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 14
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/all-primitive-roots",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 14
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/all-primitive-roots", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":14}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":14}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/all-primitive-roots", 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
{
"n": 14
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.all_primitive_roots",
"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 | 10000 |
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. |