Alle Primitivwurzeln modulo n
Dieser Rechner für alle Primitivwurzeln modulo n liefert die vollständige, sortierte Menge der Generatoren der multiplikativen Einheitengruppe modulo einer ganzen Zahl n.
Im Browser ausführen – kostenlos
Er prüft zunächst, ob der Modulus zu einer Familie mit Primitivwurzeln gehört, berechnet dann Eulers Phi-Funktion, findet einen Generator und leitet alle weiteren ab. Die Antwort enthält Modulus, Phi-Wert, Anzahl und vollständige Wurzelliste. Werte unter zwei und Moduln ohne Primitivwurzel führen zu einer klaren Fehlermeldung. Dieselbe deterministische Arithmetik unterstützt schnelle Prüfungen sowie reproduzierbare API-Automatisierung für $0.002 je erfolgreicher Anfrage.
Was die vollständige Liste der Primitivwurzeln bedeutet
Eine Primitivwurzel modulo n ist ein Rest, dessen aufeinanderfolgende Potenzen jede invertierbare Restklasse modulo n erzeugen. Entscheidend ist „jede“: Eine Zahl kann zu n teilerfremd sein und dennoch nur eine echte Untergruppe durchlaufen. Eine Einheit zu sein ist daher notwendig, aber nicht hinreichend. Diese Fähigkeit gibt alle positiven Vertreter zwischen 1 und n minus 1 zurück, deren multiplikative Ordnung genau phi(n) ist. Beim Modulus 14 hat die Einheitengruppe beispielsweise sechs Elemente, während die vollständige Generatormenge zwei Reste enthält. Die Antwort nennt n, Eulers Phi-Wert, die Anzahl der Primitivwurzeln und das numerisch sortierte Array primitive_roots. Die Anzahl dient als Kontrolle: Existieren Primitivwurzeln, so gibt es phi(phi(n)) davon. Der Sonderfall 2 besitzt korrekt die einzige Wurzel 1. Ein Modulus ohne Generator der gesamten Einheitengruppe wird ausdrücklich abgelehnt; eine leere Liste würde fälschlich verschleiern, dass die Gruppe nicht zyklisch ist.
Wie Existenz und einzelne Generatoren geprüft werden
Primitivwurzeln existieren nicht für jeden Modulus. Der Klassifikationssatz besagt, dass die multiplikative Gruppe modulo n genau dann zyklisch ist, wenn n gleich 2, 4, einer ungeraden Primzahlpotenz oder dem Doppelten einer ungeraden Primzahlpotenz ist. Der Rechner faktorisiert n und prüft diese Strukturbedingung vor der Suche. Für einen zulässigen Modulus berechnet er phi(n), faktorisiert die Gruppenordnung und testet mögliche Einheiten mit modularer Exponentiation. Ein Kandidat g besitzt genau dann die volle Ordnung phi(n), wenn für jeden verschiedenen Primteiler q von phi(n) der Wert g hoch phi(n) geteilt durch q nicht kongruent zu 1 modulo n ist. Nach dem Fund eines solchen g sind sämtliche Primitivwurzeln Potenzen g hoch k, wobei k zu phi(n) teilerfremd ist. Die Implementierung zählt diese Exponenten auf, berechnet exakte Reste und sortiert das Ergebnis. Zufall, externe Tabellen, Netzwerk und aktuelle Zeit werden nicht verwendet; gleiche Eingaben ergeben stets denselben Zahleninhalt.
Einsatz des Ergebnisses in Mathematik und Software
Vollständige Generatorlisten helfen, wenn eine Aufgabe mehr als die kleinste Primitivwurzel verlangt. Lernende können die ausgegebenen Reste mit selbst erstellten Potenztabellen vergleichen und nachvollziehen, warum die Generatoranzahl phi(phi(n)) beträgt. Lehrkräfte können Lösungsschlüssel mit allen gültigen Antworten erstellen. Softwareentwickler können Testdaten für Routinen zur multiplikativen Ordnung erzeugen, Aufzählungscode prüfen oder anhand einer separaten Anwendungsregel zwischen mehreren Generatoren wählen. Auch Fehlerfälle sind lehrreich: Die Moduln 8 und 15 zeigen, dass viele zusammengesetzte Zahlen trotz zahlreicher invertierbarer Reste keine zyklische Einheitengruppe besitzen. Die Eingabe ist auf 10,000 begrenzt, weil die verlangte Ausgabe vollständig ist und viele Wurzeln enthalten kann; dadurch bleiben Darstellung, API-Größe und Laufzeit vorhersehbar. Geben Sie n als ganze Zahl oder einfache dezimale Zeichenfolge an. Erfolgreiche Anfragen kosten $0.002; nicht unterstützte oder fehlerhafte Eingaben werden eindeutig bezeichnet.
Anwendungsfälle
Eine zahlentheoretische Aufgabe prüfen
Vergleichen Sie eine manuelle Rechnung mit der vollständigen, sortierten Generatormenge modulo n.
Deterministische Testdaten erzeugen
Erstellen Sie exakte Sollwerte für Code zur multiplikativen Ordnung oder zu zyklischen Einheitengruppen.
Zyklische und nichtzyklische Einheitengruppen lehren
Stellen Sie zulässige Moduln Werten ohne Primitivwurzel gegenüber und erläutern Sie den Klassifikationssatz.
Häufige Fragen
Was kostet eine API-Anfrage?
Eine erfolgreiche API-Anfrage kostet $0.002. Bei ungültiger Eingabe erscheint ein Fehler anstelle einer Wurzelliste.
Welche Moduln besitzen Primitivwurzeln?
Genau 2, 4, ungerade Primzahlpotenzen und das Doppelte solcher Potenzen. Andere Moduln werden abgelehnt, weil ihre Einheitengruppen nicht zyklisch sind.
Warum kann ein teilerfremder Rest keine Primitivwurzel sein?
Teilerfremdheit macht den Rest nur zu einer Einheit. Eine Primitivwurzel muss zusätzlich die größtmögliche multiplikative Ordnung phi(n) besitzen.
Wie viele Primitivwurzeln sollte das Ergebnis enthalten?
Wenn sie existieren, beträgt ihre Anzahl phi(phi(n)). Die Antwort enthält die berechnete Anzahl neben dem Array.
Warum ist n auf 10,000 begrenzt?
Die Ausgabe listet jeden Generator auf und wächst daher mit n. Die Grenze hält vollständige Berechnung und Antwortgröße vorhersehbar.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem 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)Beispiel-Anfrage
{
"n": 14
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.all_primitive_roots",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_n | 10000 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |