Deterministischer Miller–Rabin-Test
97 ist prim: Die Zahl besteht alle sieben festen Basen 2, 3, 5, 7, 11, 13 und 23, die nachweislich jede ganze Zahl bis 9007199254740991 sicher entscheiden. Bei einer zusammengesetzten Zahl sehen Sie zudem die erste Basis, die sie entlarvt hat. 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
- 97
- Schranke
- 9.007.199.254.740.991
- Anzahl der Zeugen
- 7
Der deterministische Miller–Rabin-Test entscheidet, ob eine ganze Zahl n prim ist, indem er den starken wahrscheinlich-primen Zeugentest gegen eine kurze, feste Liste von Basen ausführt, die jede ganze Zahl unterhalb einer veröffentlichten Garantieschranke korrekt entscheiden. Im Gegensatz zu einem probabilistischen Miller–Rabin-Lauf, der zufällige Zeugen zieht und nur den Fehler schätzt, verwendet diese Fähigkeit stets dieselben Basen, liefert für dasselbe n stets dasselbe Urteil und lehnt Eingaben ab, die oberhalb der Schranke liegen, in der diese Basen nicht mehr als ausreichend bewiesen sind. Sie senden eine einzelne ganze Zahl von mindestens zwei bis höchstens zur Schranke und erhalten ein Prim-Flag, die Zeugenliste, die Schranke selbst und—wenn die Zahl zusammengesetzt ist—den ersten Zeugen, der das bewiesen hat.
So arbeitet der starke wahrscheinlich-prime Test mit festen Basen
Miller–Rabin schreibt einen ungeraden Kandidaten n um als n minus eins gleich d mal zwei hoch s mit ungeradem d und berechnet dann für jeden Zeugen a die Potenz a hoch d modulo n. Ist diese Potenz eins oder n minus eins, besteht der Zeuge. Andernfalls quadriert der Algorithmus den Wert bis zu s minus einer Mal und akzeptiert den Zeugen nur, wenn irgendein Zwischenquadrat n minus eins ergibt; jeder andere Pfad beweist, dass n für diese Basis zusammengesetzt ist.
Eine Zahl, die jeden Zeugen besteht, heißt stark wahrscheinlich prim zu diesen Basen. Für sorgfältig gewählte feste Mengen zeigen zahlentheoretische Ergebnisse, dass es unter einer bekannten Schwelle keine zusammengesetzte Zahl gibt, die alle Basen der Menge täuscht—so wird das wahrscheinlich-prime Ergebnis innerhalb der Schranke zu einem echten Primurteil. Diese Fähigkeit verwendet die sieben Basen zwei, drei, fünf, sieben, elf, dreizehn und dreiundzwanzig, die für jede 64-Bit-Ganzzahl und damit für jede sichere JavaScript-Ganzzahl bis neun Billiarden ausreichen.
Die winzigen Primzahlen zwei und drei werden als prim entschieden. Teilt ein Zeuge n und ist kleiner als n, wird dieser Zeuge als fehlgeschlagene Basis gemeldet, weil n ein offensichtliches Vielfaches ist.
Wann ein Primtest mit festen Basen hilft
Kryptographie-Kurse und CTF-Trainer nutzen einen deterministischen Miller–Rabin-Test, um Studierenden den Unterschied zwischen probabilistischen Prüfungen mit Zufallszeugen und Zertifikaten fester Basen zu zeigen, die ihre Garantieschranke in der Antwort nennen. Bibliotheksautoren verankern Unit-Tests gegen bekannte Primzahlen, starke Pseudoprimzahlen und Zusammengesetzte, damit ein Refactor der modularen Exponentiation ein Urteil nicht still umkippt. Anwendungsentwickler validieren primförmige Konfigurationswerte, Puzzle-Saaten oder Spielzeug-Diffie–Hellman-Parameter vor einer längeren Pipeline und fangen gerade Werte und kleine Zusammengesetzte ab, ohne ein Computeralgebrasystem aufzusetzen.
Bevorzugen Sie dieses Werkzeug, wenn die Suchabsicht genau der deterministische Miller–Rabin-Algorithmus mit festen Zeugen und harter Schranke ist—nicht wenn Sie den kleinsten Teiler einer Zusammengesetzten, die vollständige Primfaktorisierung, Lucas–Lehmer für Mersenne-Zahlen oder probabilistische Tests mit einer von Ihnen gelieferten benutzerdefinierten Zeugenliste brauchen.
Anwendungsfälle
Zertifikate fester Miller–Rabin-Basen lehren
Zeigen Sie Studierenden ein Prim- oder Zusammengesetzt-Urteil zusammen mit der genauen Zeugenliste und der Garantieschranke, damit der Unterschied zu probabilistischen Tests mit Zufallszeugen greifbar wird.
Primförmige Parameter unter einer Schranke prüfen
Lehnen Sie Konfigurationswerte, Puzzle-Saaten oder Spielzeug-Kryptomoduli ab, die festes Miller–Rabin nicht bestehen, und halten Sie den fehlgeschlagenen Zeugen in der Audit-Spur fest.
Häufige Fragen
Was kostet der deterministische Miller–Rabin-Test?
Dieselbe Prüfung läuft auf dieser Seite auch kostenlos in Ihrem Browser; ungültige Eingabe wird nicht berechnet.
Welche Zahlen werden akzeptiert?
Ganze Zahlen von 2 bis zur veröffentlichten Garantieschranke 9007199254740991.
Welche Zeugenbasen werden verwendet?
Die feste Liste 2, 3, 5, 7, 11, 13 und 23. Sie werden im Feld witnesses bei jeder erfolgreichen Antwort zurückgegeben, damit Clients die Menge nie hardcodieren müssen.
Ist dies probabilistisches Miller–Rabin?
Nein. Die Basen sind fest und für jede ganze Zahl in der unterstützten Schranke als ausreichend bewiesen, sodass dasselbe n stets dasselbe deterministische Prim- oder Zusammengesetzt-Urteil erzeugt.
Was geschieht, wenn n größer als die Schranke ist?
Die Fähigkeit behauptet kein deterministisches Urteil außerhalb des Bereichs, in dem die festen Basen zertifiziert sind.
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/miller-rabin-deterministic \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":97}'const res = await fetch("https://api.kit.forhosting.com/numth/miller-rabin-deterministic", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 97
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/miller-rabin-deterministic",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 97
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/miller-rabin-deterministic", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":97}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":97}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/miller-rabin-deterministic", 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": 97
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.miller_rabin_deterministic",
"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 modulare Arithmetik speist den kostenlosen Browserpfad und den API-Pfad, sodass Hausaufgabenprüfungen, Krypto-Spielzeuge und Automatisierungsskripte bei einer grenzwertigen Carmichael-Zahl oder einer starken Pseudoprimzahl nie auseinanderlaufen.
Was deterministisches Miller–Rabin liefert und wie die Schranke wirkt
Jeder erfolgreiche Aufruf beantwortet vier zusammenhängende Fragen: ist n unter der Miller–Rabin-Suite mit festen Basen prim, welche Zeugenbasen wurden angewendet, welches ist die größte ganze Zahl, die diese Suite korrekt zu entscheiden garantiert, und—falls n zusammengesetzt ist—welcher Zeuge den starken wahrscheinlich-primen Test zuerst verfehlt hat. Nutzen Sie diesen Endpunkt, wenn Sie ein auditierbares deterministisches Miller–Rabin-Urteil mit Zeugenliste und Schranke im Ergebnis brauchen, nicht eine probabilistische Vermutung und nicht die vollständige Faktorisierung jedes Teilers. Die Antwort ist ein kompaktes JSON-Objekt mit einem booleschen prime-Flag, der zurückgegebenen ganzen Zahl n, einem geordneten Array witnesses, der numerischen Schranke, einem witness_count, einem Feld failing_witness (null bei Primzahlen, eine konkrete Basis bei Zusammengesetzten) und einem method-Label mit miller_rabin_deterministic, damit Clients den Algorithmuspfad protokollieren können. Fehlende, gebrochene, nicht numerische oder streng unter zwei liegende Eingaben werden mit invalid_input abgelehnt, bevor irgendeine modulare Exponentiation läuft. Werte oberhalb der veröffentlichten Garantieschranke werden ebenfalls mit invalid_input und einer Nachricht abgelehnt, die die Schranke nennt, weil eine feste Zeugenliste nur innerhalb dieses Bereichs ein mathematisches Zertifikat ist; darüber können dieselben Basen eine zusammengesetzte Zahl unentdeckt lassen. Dieser harte Abbruch ist der Produktunterschied zu einem allgemeinen Primzahlprüfer, der still die Strategie wechseln oder Primheit ohne Angabe seiner Zertifikatsgrenze behaupten könnte.
So arbeitet der starke wahrscheinlich-prime Test mit festen Basen
Gerade Zusammengesetzte werden sofort mit failing_witness zwei abgelehnt, ohne die volle Schleife.
Wo eine deterministische Miller–Rabin-API sich lohnt
Dateningenieure prüfen numerische Spalten, die Primzahlen zu sein vorgeben, und speichern das Feld failing_witness im Audit-Log, wenn eine Zeile scheitert. Weil die Fähigkeit Stufe A ist, können Sie eine Zahl auf dieser Seite einfügen und dieselbe Logik kostenlos im Browser ausführen; automatisieren Sie denselben Vertrag später zu $0.002 pro Anfrage, wenn Sie Aufgaben in Skripte oder SDKs einbinden. Halten Sie n als ganze Zahl von mindestens zwei innerhalb der veröffentlichten Schranke, behandeln Sie invalid_input als Client-Korrektur statt als erneuten Versuch, und protokollieren Sie die Felder witnesses und bound, wann immer Sie ein reproduzierbares Zertifikat dessen brauchen, was geprüft wurde.
Integrationsbeispiele
Unit-Tests für modulare Primtests verankern
Behaupten Sie Golden-Primzahlen, Zusammengesetzte und Ablehnungen außerhalb der Schranke gegen ein stabiles deterministisches Miller–Rabin-Orakel, bevor Sie eine Änderung an einer Krypto- oder Zahlentheorie-Bibliothek ausliefern.