Proth-Primzahltest mit Zeugen
Der Proth-Primzahltest untersucht eine als k × 2^n + 1 dargestellte Zahl, indem er den Satz von Proth auf den von Ihnen angegebenen Zeugen anwendet.
Im Browser ausführen – kostenlos
Zunächst wird geprüft, ob k positiv und ungerade, n positiv und k kleiner als 2^n ist. Anschließend berechnet das Werkzeug die erforderliche modulare Potenz exakt. Eine erfolgreiche Kongruenz beweist die Primzahleigenschaft; ein erfolgloser Zeuge bleibt ergebnisoffen, sofern er keinen Faktor offenlegt.
Geben Sie eine echte Proth-Zahl und einen Zeugen ein
Eine Proth-Zahl besitzt genau die Form N = k × 2^n + 1. Dabei ist k eine positive ungerade ganze Zahl, n eine positive ganze Zahl und k strikt kleiner als 2^n. Jede dieser Bedingungen ist erforderlich. Der Rechner nimmt k und den Zeugen als Dezimaltext entgegen, damit große Werte exakt bleiben und nicht durch Gleitkommaarithmetik gerundet werden. Geben Sie n als ganze Zahl zwischen 1 und 10,000 ein. Das Werkzeug bildet N selbst, statt die Zahl zusätzlich abzufragen. So kann die angegebene Zahl nicht von ihren definierenden Parametern abweichen. Außerdem muss der Zeuge strikt zwischen 1 und N liegen. Bei geradem k, einem nicht positiven Wert oder k größer oder gleich 2^n wird die Eingabe als Nicht-Proth-Form zurückgewiesen; ein Satz wird nicht außerhalb seiner Voraussetzungen angewandt. Zahl, Exponent, Zeuge und Rest erscheinen bei Bedarf als Dezimalzeichenfolgen. Dadurch können Sie die Rechnung prüfen und die Werte verlustfrei in ein anderes Werkzeug für exakte Arithmetik übernehmen.
Verstehen Sie die Aussage der Kongruenz
Für eine gültige Proth-Zahl N besagt der Satz: N ist prim, wenn eine ganze Zahl a existiert, für die a^((N−1)/2) kongruent zu −1 modulo N ist. Der eingegebene Zeuge übernimmt die Rolle von a. Der Rechner bestimmt die modulare Potenz durch wiederholtes Quadrieren, ohne zuvor die riesige gewöhnliche Potenz aufzubauen. In der Ausgabe ist `residue` der kleinste nicht negative Rest. `passes_test` ist genau dann true, wenn dieser N−1 entspricht, also der modularen Darstellung von −1. Dann ist `prime_proven` true und das Urteil lautet `prime`. Unter den bereits geprüften Proth-Bedingungen ist dies ein deterministischer Beweis und keine bloße Wahrscheinlichkeitsaussage. Die Antwort enthält den exakten Exponenten (N−1)/2, sodass Sie die Kongruenz unabhängig nachvollziehen können. Der Algorithmus verwendet ausschließlich ganzzahlige Operationen, wählt keine zufälligen Zeugen und fragt weder Tabellen noch entfernte Dienste ab. Dieselbe Eingabe liefert deshalb stets dasselbe Ergebnis und legt alle wesentlichen Werte des Satzes offen.
Deuten Sie einen erfolglosen Zeugen korrekt
Wenn ein Zeuge nicht −1 ergibt, ist damit allein noch nicht bewiesen, dass die Zahl zusammengesetzt ist. Es bedeutet lediglich, dass dieser bestimmte Zeuge die hinreichende Bedingung des Satzes von Proth nicht erfüllt. Deshalb meldet der Rechner `inconclusive` statt `composite`, wenn der Rest abweicht und der Zeuge zu N teilerfremd ist. Sie können anschließend einen anderen mathematisch gewählten Zeugen oder ein weiteres deterministisches Primzahlverfahren einsetzen. Eine nützliche Ausnahme gibt es: Vor der Auswertung der Kongruenz berechnet das Werkzeug den größten gemeinsamen Teiler von Zeuge und N. Ist dieser Wert ein echter Faktor, lautet das eindeutige Ergebnis `composite`, und der Faktor wird ausgegeben. Diese Trennung verhindert, dass ein einseitiger Satz fälschlich als zweiseitiger Test behandelt wird. Auch automatisierte Abläufe bleiben dadurch korrekt: Akzeptieren Sie `prime` als Beweis, verwerfen Sie `composite` bei gefundenem Faktor und leiten Sie `inconclusive` an einen weiteren Test weiter, statt es unbemerkt als endgültigen Fehlschlag zu werten.
Anwendungsfälle
Einen Suchkandidaten verifizieren
Prüfen Sie ein erzeugtes Paar aus k und n mit einem gewählten Zeugen, bevor Sie den Kandidaten als bewiesene Primzahl speichern.
Den Satz von Proth vermitteln
Zeigen Sie den exakten Exponenten, den modularen Rest und den Unterschied zwischen Beweis und ergebnislosem Zeugen.
Eine deterministische Kontrolle ergänzen
Prüfen Sie die Proth-Voraussetzungen und leiten Sie prim, zusammengesetzt und ergebnisoffen ohne Gleitkommaarithmetik weiter.
Häufige Fragen
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Die Berechnung kann außerdem kostenlos im Browser ausgeführt werden.
Wann ist eine Eingabe eine Proth-Zahl?
Sie muss k × 2^n + 1 entsprechen, wobei k positiv und ungerade, n positiv und k < 2^n ist.
Beweist ein erfolgloser Zeuge die Zusammengesetztheit?
Nein. Das Ergebnis ist normalerweise offen. Zusammengesetztheit wird nur gemeldet, wenn der Zeuge einen nicht trivialen gemeinsamen Faktor zeigt.
Warum werden k und der Zeuge als Zeichenfolgen eingegeben?
Dezimale Zeichenfolgen bewahren Ganzzahlen außerhalb des sicheren JavaScript-Zahlenbereichs ohne Rundung.
Ist ein positives Ergebnis probabilistisch?
Nein. Nach Prüfung der Proth-Bedingungen ist die verlangte Kongruenz ein Beweis der Primzahleigenschaft.
Werden Zeugen automatisch ausgewählt?
Nein. Sie geben den Zeugen vor, und die Fähigkeit prüft genau diesen Wert deterministisch.
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/proth-test \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"k":"3","n":3,"witness":"3"}'const res = await fetch("https://api.kit.forhosting.com/numth/proth-test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"k": "3",
"n": 3,
"witness": "3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/proth-test",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"k": "3",
"n": 3,
"witness": "3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/proth-test", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"k":"3","n":3,"witness":"3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"k":"3","n":3,"witness":"3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/proth-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
{
"k": "3",
"n": 3,
"witness": "3"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.proth_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_n | 10000 |
max_decimal_digits | 3011 |
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. |