Lucas-Primzahltest
Dieser Prüfer für den Lucas-Primzahltest macht aus einem kompakten mathematischen Zertifikat ein reproduzierbares Primzahlergebnis.
Im Browser ausführen – kostenlos
Geben Sie eine ungerade ganze Zahl n, einen vorgeschlagenen Lucas-Zeugen und die vollständige Primfaktorzerlegung von n minus eins an. Der Rechner prüft die Faktorisierung selbst, berechnet die erforderlichen modularen Potenzen und größten gemeinsamen Teiler und zertifiziert n nur, wenn sämtliche Bedingungen des Satzes von Lucas erfüllt sind. Dezimalzeichenfolgen erhalten ganze Zahlen exakt, auch jenseits des üblichen sicheren Zahlenbereichs von JavaScript.
Bereiten Sie ein vollständiges Zertifikat vor
Beginnen Sie mit der ungeraden ganzen Zahl, die Sie zertifizieren möchten, und faktorisieren Sie n minus eins vollständig. Geben Sie n und jeden Primfaktor als kanonische Dezimalzeichenfolge ein, denn Zeichenfolgen bewahren exakte Werte bis zur 64-Bit-Grenze. Jeder Faktor erscheint genau einmal mit seinem positiven Exponenten. Für n = 29 gilt beispielsweise n minus eins = 28 = 2 zum Quadrat mal 7; die Liste enthält daher 2 mit Exponent 2 und 7 mit Exponent 1. Zusätzlich müssen Sie eine Basis a mit 1 < a < n angeben. Diese Basis ist der vorgeschlagene Lucas-Zeuge. Der Prüfer verlangt den Zeugen bewusst, statt nach ihm zu suchen: Die Prüfung eines Zertifikats ist schnell, begrenzt und wiederholbar, während die Dauer einer Suche von der Eingabe abhängen kann. Falls Sie noch keinen Zeugen haben, testen Sie kleine Basen mit einem separaten Werkzeug für Primitivwurzeln und reichen Sie anschließend das erhaltene Zertifikat ein. Leerraum, Vorzeichen, führende Nullen, Gleitkommanotation, doppelte Primzahlen, zusammengesetzte Faktoren und fehlende Faktoren werden abgelehnt und nicht stillschweigend normalisiert. Dadurch eignet sich das Zertifikat für Prüfprotokolle und automatisierte Abläufe.
Verstehen Sie die beiden Lucas-Bedingungen
Die erste Berechnung prüft, ob a hoch n minus eins kongruent zu 1 modulo n ist. Dies ist die bekannte Fermat-Bedingung, die allein jedoch keine Primzahl beweist, weil Pseudoprimzahlen sie erfüllen können. In der entscheidenden zweiten Stufe wird jede verschiedene Primzahl q verwendet, die n minus eins teilt. Für jedes q berechnet der Prüfer a hoch (n minus eins) geteilt durch q modulo n, zieht eins ab und prüft, ob das Ergebnis mit n den größten gemeinsamen Teiler 1 hat. Wenn alle Prüfungen erfolgreich sind, ist die multiplikative Ordnung von a modulo n nachweislich genau n minus eins. Ein Element modulo n kann diese Ordnung nur besitzen, wenn n prim ist; das ist der Kern des Satzes von Lucas. Die zurückgegebenen Prüfeinträge zeigen den modularen Rest und den größten gemeinsamen Teiler für jedes verschiedene q, während der Exponent als Teil der validierten Faktorisierung sichtbar bleibt. Die modulare Potenzierung nutzt wiederholtes Quadrieren mit exakter BigInt-Arithmetik. Die Berechnung hängt daher weder von Gleitkommarundung noch von Zufallsbasen, Netzwerkdiensten oder probabilistischer Sicherheit ab.
Deuten Sie Fehler und erfolgreiche Ausgaben
Eine erfolgreiche Antwort ist das Ergebnis eines Primzahlzertifikats und nicht bloß die Einstufung als wahrscheinlich prim. Sie wiederholt n, nennt den akzeptierten Zeugen, gibt den Fermat-Rest aus und führt für jeden verschiedenen Faktor von n minus eins eine erfolgreiche Prüfung des größten gemeinsamen Teilers auf. Bewahren Sie die ursprüngliche Eingabe zusammen mit dieser Antwort auf, wenn ein anderes System den Beweis nachvollziehen soll. Fehlermeldungen sind absichtlich präzise. Ergibt das Produkt der Faktorpotenzen nicht genau n minus eins, ist die Faktorisierung unvollständig oder anderweitig falsch. Ist ein angegebener Faktor zusammengesetzt oder erscheint dieselbe Primzahl zweimal, ist die Faktorisierung selbst bei passendem Rohprodukt fehlerhaft. Das Scheitern einer modularen Bedingung bedeutet, dass die angegebene Basis kein Lucas-Zeuge ist; allein dadurch lässt sich eine zusammengesetzte Zahl n nicht von einer Primzahl mit ungeeigneter Basis unterscheiden. Probieren Sie einen mathematisch begründeten anderen Zeugen, falls Sie weiterhin eine Primzahl erwarten. Die Eingabe ist auf ungerade ganze Zahlen von 3 bis 2^64 minus 1 beschränkt. So lassen sich die angegebenen Primfaktoren vor der Zertifikatsprüfung deterministisch validieren. Der API-Preis beträgt $0.002 je Anfrage.
Anwendungsfälle
Erzeugte Primzahl prüfen
Prüfen Sie einen Kandidaten samt seiner bei der Erzeugung ermittelten Faktorisierung, bevor Sie ihn in einer weiteren exakten Berechnung einsetzen.
Zertifikat nachvollziehen
Validieren Sie einen Lucas-Zeugen aus einer Veröffentlichung, einer Übung oder einer archivierten Berechnung samt expliziten Zwischenresten.
Zahlentheoretische Daten filtern
Lehnen Sie unvollständige Faktorisierungen und ungültige Zeugen ab, bevor behauptete Primzahlen in einen verlässlichen Datensatz gelangen.
Häufige Fragen
Beweist ein erfolgreiches Ergebnis die Primzahleigenschaft?
Ja. Ist die vollständige Faktorisierung gültig und sind alle Lucas-Bedingungen erfüllt, ist das Ergebnis ein deterministischer Primzahlbeweis für n.
Warum muss ich eine Basis angeben?
Die Basis ist der im Zertifikat enthaltene Zeuge. Durch ihre Angabe bleibt die Prüfung begrenzt und reproduzierbar, statt eine offene Suche nach einer Primitivwurzel auszuführen.
Was bedeutet das Scheitern einer Basis?
Diese Basis ist kein gültiger Zeuge. Der Kandidat kann zusammengesetzt oder mit einem anderen geeigneten Zeugen prim sein; der Fehler allein entscheidet das nicht.
Warum werden ganze Zahlen als Zeichenfolgen eingegeben?
Dezimalzeichenfolgen verhindern Genauigkeitsverluste bei ganzen Zahlen oberhalb des sicheren Zahlenbereichs von JavaScript. Ausgaben verwenden sie aus demselben Grund.
Wie wird die Faktorisierung geprüft?
Jeder angegebene Faktor wird deterministisch auf Primalität geprüft, Duplikate werden abgelehnt und das Produkt aller Primzahlpotenzen muss genau n minus eins ergeben.
Was kostet die Nutzung?
Jede API-Anfrage kostet $0.002. Die Browserimplementierung verwendet dieselbe reine Berechnung.
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/lucas-primality-test \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":"29","base":"2","factors":[{"prime":"2","exponent":2},{"prime":"7","exponent":1}]}'const res = await fetch("https://api.kit.forhosting.com/numth/lucas-primality-test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": "29",
"base": "2",
"factors": [
{
"prime": "2",
"exponent": 2
},
{
"prime": "7",
"exponent": 1
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/lucas-primality-test",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": "29",
"base": "2",
"factors": [
{
"prime": "2",
"exponent": 2
},
{
"prime": "7",
"exponent": 1
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/lucas-primality-test", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":"29","base":"2","factors":[{"prime":"2","exponent":2},{"prime":"7","exponent":1}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":"29","base":"2","factors":[{"prime":"2","exponent":2},{"prime":"7","exponent":1}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/lucas-primality-test", 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": "29",
"base": "2",
"factors": [
{
"prime": "2",
"exponent": 2
},
{
"prime": "7",
"exponent": 1
}
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.lucas_primality_test",
"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_bits | 64 |
max_factors | 64 |
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. |