Start · Sprachen · PHP · Referenz · gmp_lcm

gmp_lcm

Funktion

Berechnet das kleinste gemeinsame Vielfache (kgV) zweier ganzer Zahlen als <code>GMP</code>-Objekt.

seit PHP 8.0.0 Kategorie: math

Signatur

gmp_lcm(GMP|int|string $num1, GMP|int|string $num2): GMP

Beschreibung

gmp_lcm() ermittelt das kleinste gemeinsame Vielfache (kgV) der beiden übergebenen ganzen Zahlen. Das kgV ist die kleinste positive ganze Zahl, die durch beide Zahlen ohne Rest teilbar ist. Die Funktion arbeitet mit beliebig großen Ganzzahlen, da sie auf der GMP-Bibliothek (GNU Multiple Precision) basiert.

Die Funktion akzeptiert sowohl GMP-Objekte als auch gewöhnliche PHP-Integer oder numerische Strings, was die Verwendung sehr flexibel macht. Das Ergebnis wird stets als GMP-Objekt zurückgegeben und kann mit gmp_strval() oder gmp_intval() in einen lesbaren Wert umgewandelt werden.

Typische Einsatzgebiete sind Bruchrechnung (gemeinsame Nenner finden), Kryptografie, Zeitplanung (Synchronisationszyklen) sowie überall dort, wo mathematisch exaktes Arbeiten mit sehr großen Ganzzahlen erforderlich ist.

Das Vorzeichen der Eingaben wird ignoriert: gmp_lcm(-4, 6) liefert dasselbe Ergebnis wie gmp_lcm(4, 6). Ist einer der Werte 0, ist das kgV ebenfalls 0.

Parameter

Name Typ Default Beschreibung
$num1 Pflicht GMP|int|string Erste ganze Zahl. Kann ein GMP-Objekt, ein PHP-Integer oder ein numerischer String sein.
$num2 Pflicht GMP|int|string Zweite ganze Zahl. Kann ein GMP-Objekt, ein PHP-Integer oder ein numerischer String sein.

Rückgabewert

Typ
GMP
Beschreibung
Gibt ein GMP-Objekt zurück, das das kleinste gemeinsame Vielfache der beiden Eingabewerte darstellt. Ist einer der Werte 0, wird 0 zurückgegeben.

Beispiele

Einfaches kgV zweier Ganzzahlen berechnen

<?php
$result = gmp_lcm(12, 18);
echo gmp_strval($result); // 36

$result2 = gmp_lcm(4, 6);
echo PHP_EOL . gmp_strval($result2); // 12
36 12

Gemeinsamen Nenner für Bruchaddition ermitteln

<?php
// 1/4 + 1/6 = ?
$nenner1 = 4;
$nenner2 = 6;
$kgv = gmp_lcm($nenner1, $nenner2);
$gemeinsamerNenner = gmp_intval($kgv);

$zaehler1 = 1 * ($gemeinsamerNenner / $nenner1);
$zaehler2 = 1 * ($gemeinsamerNenner / $nenner2);
$zaehlerSumme = $zaehler1 + $zaehler2;

echo "1/{$nenner1} + 1/{$nenner2} = {$zaehlerSumme}/{$gemeinsamerNenner}";
// Ergebnis: 5/12
1/4 + 1/6 = 5/12

kgV mit sehr großen Zahlen (GMP-Stärke)

<?php
$a = gmp_init('123456789012345678901234567890');
$b = gmp_init('987654321098765432109876543210');
$result = gmp_lcm($a, $b);
echo gmp_strval($result);
13548070123626141146890540731709012816255086360095380826190

Verhalten bei Null und negativen Zahlen

<?php
// Negativer Wert: Vorzeichen wird ignoriert
$result1 = gmp_lcm(-12, 18);
echo gmp_strval($result1) . PHP_EOL; // 36

// Null: kgV ist immer 0
$result2 = gmp_lcm(0, 18);
echo gmp_strval($result2) . PHP_EOL; // 0
36 0

// Wichtig · Fallstricke

Verfügbarkeit: gmp_lcm() wurde erst mit PHP 8.0.0 eingeführt. Für ältere PHP-Versionen muss das kgV manuell über den Zusammenhang lcm(a, b) = |a * b| / gcd(a, b) mit Hilfe von gmp_gcd(), gmp_mul() und gmp_div_q() berechnet werden.

Die GMP-Erweiterung muss in der PHP-Installation aktiviert sein (--with-gmp beim Kompilieren). In den meisten modernen Distributionen und Hosting-Umgebungen ist sie standardmäßig vorhanden.