Pocklington-Primzahltest
Beweist die Primalität einer Zahl aus einer teilweisen Zerlegung von n − 1: Für 31 ergeben die Primzahlen 2, 3 und 5 von 30 einen zerlegten Teil von 30, und weil 900 mindestens 31 ist, bestätigt je ein Zeuge pro Primzahl das Ergebnis. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- N
- 31
- Faktoren
- 2, 3, 5
- N
- 31
- N minus 1
- 30
- F
- 30
- R
- 1
Das Pocklington–Lehmer-Kriterium macht aus einer partiellen Faktorisierung von n minus eins ein strenges Primzahlzertifikat. Anders als reine Probedivision oder eine einzelne Fermat-Kongruenz genügt es, genügend von n−1 zu faktorisieren, sodass der faktorisierte Teil F die Bedingung F im Quadrat mindestens n erfüllt, plus einen kurzen modularen Zeugen für jede Primzahl, die F teilt. Studierende, Krypto-Tutoren und Zahlentheorie-Notebooks nutzen diesen Pocklington-Primzahltest, um kleine und mittlere Primzahlen zu beweisen, ohne bis zur Quadratwurzel von n zu sieben. Sie liefern den Kandidaten n und die Primzahlen, deren Produkt F ist; die Engine prüft die Größenbedingung, sucht oder verifiziert Basen a und liefert ein strukturiertes Zertifikat oder einen klaren Fehler, wenn der faktorisierte Teil zu klein ist.
Was das Pocklington–Lehmer-Kriterium besagt
Schreiben Sie n minus eins als Produkt F mal R, wobei F vollständig in Primzahlen zerlegt ist, die Sie bereits kennen, und R der verbleibende Kofaktor ist.
Der klassische Satz von Pocklington lautet: Wenn F groß genug ist, dass F im Quadrat mindestens n ist, und für jede Primzahl q, die F teilt, eine ganzzahlige Basis a existiert, sodass a hoch n minus eins kongruent eins modulo n ist und der größte gemeinsame Teiler von a hoch (n minus eins) geteilt durch q, minus eins, mit n gleich eins ist, dann ist n prim.
Anschaulich erzwingen diese beiden modularen Bedingungen, dass die multiplikative Ordnung von a modulo n ein Vielfaches von q für jede solche Primzahl ist, also ein Vielfaches von F; zusammen mit F größer als die Wurzel von n kann kein zusammengesetztes n einen echten Teiler auf die übliche Weise verbergen. Das ist stärker als der kleine Satz von Fermat allein, der nur einen einzigen Potenzrest prüft und von Pseudoprimzahlen getäuscht werden kann.
Es ist auch sparsamer als die vollständige Faktorisierung von n oder Probedivision bis sqrt(n), wenn Sie bereits viele Faktoren von n−1 kennen—zum Beispiel wenn n eine Proth-Zahl, eine Safeprime-Konstruktion oder eine Übungszahl ist, die so gebaut ist, dass n−1 leicht faktorisiert.
Klassenzimmerbeweise, Krypto-Demos und Automatisierung
Zahlentheorie-Kurse nutzen einen Pocklington-Primzahltest, damit Lernende Primzahlen wie einunddreißig, einundsechzig oder siebenundneunzig zertifizieren, nachdem sie n−1 von Hand faktorisiert haben, statt nur einen undurchsichtigen is-prime-Knopf zu drücken. Wettbewerbs-Tools erzeugen Kandidaten mit glattem n−1, speisen die bekannten Faktoren in diesen Endpunkt und speichern die zurückgegebenen Zeugen als kurzes Beweisobjekt neben dem Lösungsschlüssel. Kryptografie-Notebooks, die Spielzeug-Safeprimes bauen oder zeigen, wie sich Primzahlzertifikate von probabilistischen Miller–Rabin-Runden unterscheiden, können goldene Zertifikate für feste n und factors festnageln, ohne modulare Exponentiation in jeder Sprache neu zu implementieren.
Bibliotheksautoren mit Property-Tests behaupten, dass certified true impliziert, dass ihre eigene Primzahlroutine auf demselben n übereinstimmt, und dass unzureichendes F stets den dokumentierten Fehler „Teil zu klein“ auslöst. Wenn Sie nur einen winzigen Ausschnitt von n−1 faktorisiert haben, faktorisieren Sie zuerst mehr oder nutzen Sie einen allgemeinen Primzahlprüfer; diese Landing bleibt der Suchintention Pocklington–Lehmer gewidmet, damit SEO, Beispiele und Antwortform fokussiert bleiben.
Anwendungsfälle
Primzahlzertifikate für Hausaufgaben und Prüfungen
Studierende faktorisieren n−1, senden n und die Primzahlen von F und erhalten Zeugen, die n unter Pocklington–Lehmer als prim beweisen, wenn F groß genug ist.
Wettbewerbs- und LMS-Autokorrektoren
Bewerten Sie Zahlentheorie-Aufgaben mit einem deterministischen Zertifikatsorakel, das zu kleines F und nicht-prime Faktorlisten ablehnt statt stiller Falschpositive.
Checks in Krypto- und CAS-Notebooks
Nageln Sie goldene Pocklington-Zertifikate für feste Primzahlen in Unit-Tests fest, ohne modPow und gcd-Prüfungen in jeder Sprache neu zu bauen.
Häufige Fragen
Was ist der Pocklington-Primzahltest?
Ein Kriterium, das n aus einer partiellen Faktorisierung n−1=F·R mit vollständig faktorisiertem F, F²≥n und modularen Zeugen a für jede Primzahl q|F als prim zertifiziert.
Wann ist der faktorisierte Teil zu klein?
Wenn F² < n (äquivalent F ≤ R bei n−1=F·R).
Welche Eingaben muss ich senden?
Pflicht: n (≥3) und factors (Array von Primzahlen mit Vielfachheit, Produkt F).
Bedeutet certified false, dass n zusammengesetzt ist?
Nein. Es bedeutet, dass unter dem gegebenen F und den bases kein gültiger Zeuge gefunden wurde. n kann noch prim sein; versuchen Sie mehr Basen, einen größeren faktorisierten Teil oder eine andere Primzahlmethode.
Kann ich die Zeugenbasen selbst wählen?
Ja. Geben Sie ganze Zahlen ab 2 an, entweder eine gemeinsame Basis für alle Primzahlen oder eine pro verschiedener Primzahl in Reihenfolge. Ohne Angabe sucht der Test selbst Basen von 2 bis 200.
Verwandte Tools
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/pocklington-test \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":31,"factors":[2,3,5]}'const res = await fetch("https://api.kit.forhosting.com/numth/pocklington-test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 31,
"factors": [
2,
3,
5
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/pocklington-test",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 31,
"factors": [
2,
3,
5
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/pocklington-test", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":31,"factors":[2,3,5]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":31,"factors":[2,3,5]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/pocklington-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": 31,
"factors": [
2,
3,
5
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.pocklington_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.
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. |
Technische Hinweise
Dieselbe reine BigInt-Logik speist das kostenlose Browser-Werkzeug und den API-Pfad zu $0.002 pro erfolgreicher Anfrage.
Was das Pocklington–Lehmer-Kriterium besagt
Diese Fähigkeit setzt genau diese Checkliste um: das Produkt Ihrer factors wird F, R ist (n−1)/F, die Schranke F² ≥ n wird erzwungen, und jede distinkte Primzahl q von F erhält einen Zeugen a (automatisch ab zwei gesucht oder aus Ihrer optionalen Liste bases). Wenn jede Primzahl besteht, setzt die Antwort certified und is_prime auf true und listet die Zeugen, damit Sie die Arithmetik von Hand oder in einem anderen System nachrechnen können.
Eingabevertrag, Größenfehler und Lesen des Zertifikats
Beispiel: n gleich einunddreißig und factors gleich zwei, drei, fünf, weil dreißig gleich zwei mal drei mal fünf ist; dann ist F dreißig, R eins, und F im Quadrat übersteigt einunddreißig deutlich. Das optionale Feld bases ist ein Array von Ganzzahlen mindestens zwei—ein gemeinsamer Zeuge für jede Primzahl oder ein Zeuge pro distinkter Primzahl in sortierter Reihenfolge—oder Sie lassen es weg und die Engine sucht a von zwei bis zweihundert. Teilt das Produkt F n−1 nicht, scheitert die Aufgabe, weil die partielle Faktorisierung inkonsistent ist. Ist F im Quadrat streng kleiner als n, scheitert die Aufgabe mit der Meldung, der faktorisierte Teil sei zu klein—das ist der beabsichtigte harte Fehler, wenn Sie n−1 nicht genug faktorisiert haben, um Pocklington–Lehmer anzuwenden. Senden Sie per POST einen JSON-Körper mit der Pflicht-Ganzzahl n (mindestens drei) und dem Pflicht-Array factors: die Primfaktoren mit Vielfachheit des faktorisierten Teils F von n−1. Jeder gelistete Faktor muss prim sein; zusammengesetzte Einträge scheitern mit invalid_input, damit eine gefälschte Faktorliste kein Zertifikat vortäuschen kann. Erfolgreiche Antworten spiegeln n, n_minus_1, F, R, F_squared, floor_sqrt_n, die distinkten Primzahlen, die Multimenge der Faktoren und ein witnesses-Array mit a pro Primzahl, dem Potenzrest, der gcd-Prüfung und ok-Flags wider. Der boolesche Wert certified ist nur true, wenn jede Primzahl einen gültigen Zeugen hat; is_prime spiegelt certified hier, weil ein voller Pocklington-Durchlauf ein Primzahlbeweis ist, während eine fehlgeschlagene Zeugensuche allein keine Zusammengesetztheit beweist. Der Preis ist pauschal $0.002 pro erfolgreichem Aufruf auf der Einheit item; Validierungsfehler werden nicht berechnet. Große Ganzzahlen dürfen als Dezimalstrings innerhalb der veröffentlichten Zifferngrenze gesendet werden, damit JSON sie nie kürzt.
Klassenzimmerbeweise, Krypto-Demos und Automatisierung
Weil die Implementierung reines Parse-Tier-A ist, kostet jeder erfolgreiche Aufruf das veröffentlichte $0.002 ohne Modell-Tokens und ohne ausgehendes Netz; der kostenlose Browserpfad führt dieselbe solve-Funktion aus. Halten Sie n und factors innerhalb der Ziffern- und Längengrenzen, bevorzugen Sie String-Ganzzahlen jenseits sicherer JavaScript-Integer und behandeln Sie certified als maßgebliches Boolean für „Pocklington hat prim bewiesen“.
Technische Fragen
Was kostet der Pocklington-Primzahltest?
Das Browser-Werkzeug ist kostenlos. API-Anfragen nutzen das vorausbezahlte KIT-Guthaben zu $0.002 pro erfolgreichem Aufruf; ungültige Eingaben werden nie berechnet.