Signatur
Beschreibung
gmp_nextprime() berechnet die kleinste Primzahl, die strikt größer als der übergebene Wert num ist. Die Funktion verwendet intern probabilistische Primzahltests (Miller-Rabin), die für praktische Zwecke hinreichend zuverlässig sind.
Die Funktion ist besonders nützlich in der Kryptographie, z. B. beim Erzeugen großer Primzahlen für RSA-Schlüsselgenerierung oder Diffie-Hellman-Parameter. Da sie mit der GMP-Erweiterung (GNU Multiple Precision) arbeitet, können beliebig große ganze Zahlen verarbeitet werden, die weit über den Bereich nativer PHP-Integer hinausgehen.
Als Eingabe akzeptiert gmp_nextprime() ein GMP-Objekt, eine ganze Zahl oder einen numerischen String. Das Ergebnis ist stets ein GMP-Objekt, das mit anderen GMP-Funktionen weiterverarbeitet werden kann.
Zu beachten ist, dass die Funktion bei sehr großen Zahlen deutlich mehr Rechenzeit benötigt, da das Intervall zwischen aufeinanderfolgenden Primzahlen mit der Größe der Zahl zunimmt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $num Pflicht | GMP|int|string | Die Ausgangszahl, ab der die nächste Primzahl gesucht wird. Kann ein GMP-Objekt, eine PHP-Ganzzahl oder ein numerischer String sein. |
Rückgabewert
num ist.Beispiele
Nächste Primzahl nach einer kleinen Zahl finden
<?php
$zahl = 10;
$naechste = gmp_nextprime($zahl);
echo gmp_strval($naechste); // 11
$zahl2 = 11;
$naechste2 = gmp_nextprime($zahl2);
echo PHP_EOL . gmp_strval($naechste2); // 13
Große Primzahl für kryptographische Zwecke generieren
<?php
// Startpunkt: eine große Zahl (z. B. 512-Bit-Bereich)
$start = gmp_pow(2, 512);
$primzahl = gmp_nextprime($start);
echo "Nächste Primzahl nach 2^512:" . PHP_EOL;
echo gmp_strval($primzahl) . PHP_EOL;
// Überprüfung mit gmp_prob_prime
$sicherheit = gmp_prob_prime($primzahl);
echo "Wahrscheinlich prim (2=definitiv, 1=wahrscheinlich): " . $sicherheit;
Primzahlen in einem Bereich aufzählen
<?php
$aktuell = gmp_init(0);
echo "Erste 10 Primzahlen:" . PHP_EOL;
for ($i = 0; $i < 10; $i++) {
$aktuell = gmp_nextprime($aktuell);
echo gmp_strval($aktuell) . " ";
}
// Wichtig · Fallstricke
Probabilistischer Test: Die intern verwendeten Primzahltests sind probabilistisch. Bei sehr großen Zahlen besteht eine theoretisch sehr geringe Restwahrscheinlichkeit, dass eine zusammengesetzte Zahl als prim klassifiziert wird. Für sicherheitskritische Anwendungen sollte das Ergebnis zusätzlich mit gmp_prob_prime() mit einem hohen Wiederholungsparameter validiert werden.
Performance: Bei sehr großen Zahlen (z. B. > 1024 Bit) kann die Berechnung erhebliche Zeit in Anspruch nehmen, da der Abstand zwischen aufeinanderfolgenden Primzahlen wächst. Für zeitkritische Anwendungen sollte ein Timeout-Mechanismus eingebaut werden.
Voraussetzung: Die GMP-Erweiterung muss aktiviert sein (extension=gmp in der php.ini). Unter PHP 7.2+ ist GMP standardmäßig in vielen Distributionen verfügbar.