Kategorien
Uncategorized

Quersumme mit PHP berechnen

In diesem Blogbeitrag geht es um die Quersumme und wie man sie in PHP berechnen kann. Wir werden uns mit der «normalen» Quersumme, der einstelligen (oder iterierten) Quersumme, der alternierenden Quersumme, der nichtalternierenden k-Quersumme, der alternierenden k-Quersumme und der gewichteten Quersumme beschäftigen.

Einfache Quersumme

Es gibt verschiedene Möglichkeiten, die einfache Quersumme mit PHP zu berechnen. Im Folgenden stelle ich die iterative Methode vor. Eine Möglichkeit, die Quersumme iterativ zu berechnen, ist die Verwendung einer Schleife. Hier ist ein Beispiel:

function iterativeQuersumme($zahl) {
    $summe = 0;
    while ($zahl > 0) {
        $summe += $zahl % 10;
        $zahl = (int) ($zahl / 10);
    }
    return $summe;
}

Die Schleife läuft, solange die Zahl größer als 0 ist. In jeder Iteration wird die letzte Ziffer der Zahl abgerufen und zur Summe hinzugefügt. Dann wird die Zahl um eine Stelle nach rechts verschoben, um die nächste Ziffer zu erhalten. Dies wird so lange durchgeführt, bis alle Ziffern hinzugefügt wurden.

Einstellige (oder iterierte) Quersumme

Die einstellige Quersumme ist die Summe der einzelnen Ziffern einer Zahl. Wenn diese Summe mehr als eine Ziffer hat, wird die Quersumme erneut berechnet. Dies wird so lange fortgesetzt, bis nur noch eine Ziffer übrig bleibt. Die einstellige Quersumme wird auch als iterierte Quersumme bezeichnet.

Um die einstellige Quersumme in PHP zu berechnen, können wir eine Schleife verwenden, die die Quersumme so lange berechnet, bis nur noch eine Ziffer übrig bleibt. Hier ist ein Beispielcode:

function einstellige_quersumme($zahl){
    while($zahl > 9){
        $summe = 0;
        while($zahl > 0){
            $summe += $zahl % 10;
            $zahl = (int)($zahl / 10);
        }
        $zahl = $summe;
    }
    return $zahl;
}

Alternierende Quersumme

Eine weitere interessante Variante der Quersumme ist die alternierende k–Quersumme. Hierbei wird jede k-te Ziffer in der Zahl positiv oder negativ gewichtet und anschließend addiert.

Beispiel:
Wir betrachten die Zahl 123456789 und wählen k=2.

  • Die 1. Ziffer (1) hat die positive Gewichtung +1
  • Die 2. Ziffer (2) hat die negative Gewichtung -2
  • Die 3. Ziffer (3) hat die positive Gewichtung +3
  • Die 4. Ziffer (4) hat die negative Gewichtung -4
  • Die 5. Ziffer (5) hat die positive Gewichtung +5
  • Die 6. Ziffer (6) hat die negative Gewichtung -6
  • Die 7. Ziffer (7) hat die positive Gewichtung +7
  • Die 8. Ziffer (8) hat die negative Gewichtung -8
  • Die 9. Ziffer (9) hat die positive Gewichtung +9

Die alternierende 2-Quersumme dieser Zahl lautet somit:
1 – 2 + 3 – 4 + 5 – 6 + 7 – 8 + 9 = 5

Die alternierende Quersumme ist also die Differenz zwischen der Summe der geraden Ziffern und der Summe der ungeraden Ziffern einer Zahl.

Um die alternierende Quersumme in PHP zu berechnen, können wir eine Schleife verwenden, die jede Ziffer der Zahl überprüft, um festzustellen, ob sie gerade oder ungerade ist, und dann die Summe der geraden Ziffern und die Summe der ungeraden Ziffern berechnet. Hier ist ein Beispielcode:

function alternierende_quersumme($zahl){
    $gerade_summe = 0;
    $ungerade_summe = 0;
    while($zahl > 0){
        $ziffer = $zahl % 10;
        if($ziffer % 2 == 0){
            $gerade_summe += $ziffer;
        } else {
            $ungerade_summe += $ziffer;
        }
        $zahl = (int)($zahl / 10);
    }
    return $gerade_summe - $ungerade_summe;
}

Nichtalternierende k-Quersumme

Die nichtalternierende k-Quersumme ist die Summe jeder k-ten Ziffer einer Zahl.

Um die nichtalternierende k-Quersumme in PHP zu berechnen, können wir eine Schleife verwenden, die jede k-te Ziffer der Zahl auswählt und die Summe berechnet. Hier ist ein Beispielcode:

function nichtalternierende_k_quersumme($zahl, $k){
    $summe = 0;
    $stelle = 0;
    while($zahl > 0){
        $stelle++;
        if($stelle == $k){
            $summe += $zahl % 10;
            $stelle = 0;
        }
        $zahl = (int)($zahl / 10);
    }
    return $summe;
}

Die Funktion benötigt zwei Parameter: die Zahl, von der die k-Quersumme berechnet werden soll, und den Wert von k. Innerhalb der Funktion wird eine Schleife ausgeführt, die solange läuft, wie die Zahl größer als Null ist. In jedem Schleifendurchlauf wird überprüft, ob die aktuelle Stelle der k-ten Stelle entspricht. Wenn dies der Fall ist, wird die Quersumme dieser Stelle zur Gesamtsumme hinzugefügt und der Stellenzähler auf Null zurückgesetzt. Ansonsten wird die Zahl um eine Stelle nach rechts verschoben.

Am Ende der Funktion wird die berechnete nichtalternierende k-Quersumme zurückgegeben.

Zum Beispiel kann man die Funktion wie folgt aufrufen:

$zahl = 123456789;
$k = 3;
$summe = nichtalternierende_k_quersumme($zahl, $k);
echo "Die nichtalternierende $k-Quersumme von $zahl ist $summe";

Dieser Code gibt die folgende Ausgabe aus:

Die nichtalternierende 3-Quersumme von 123456789 ist 18

Gewichtete Quersumme

Die Gewichtete Quersumme ist eine weitere Variante der Quersumme, bei der jeder Ziffer eine individuelle Gewichtung zugeordnet wird. Die Gewichtungen können dabei frei gewählt werden.

Beispiel:
Wir betrachten die Zahl 123456789 und wählen folgende Gewichtungen:

  • Die Ziffer 1 hat die Gewichtung 3
  • Die Ziffer 2 hat die Gewichtung 2
  • Die Ziffer 3 hat die Gewichtung 1
  • Die Ziffer 4 hat die Gewichtung 5
  • Die Ziffer 5 hat die Gewichtung 4
  • Die Ziffer 6 hat die Gewichtung 3
  • Die Ziffer 7 hat die Gewichtung 2
  • Die Ziffer 8 hat die Gewichtung 1
  • Die Ziffer 9 hat die Gewichtung 5

Die gewichtete Quersumme dieser Zahl lautet somit:
(13) + (22) + (31) + (45) + (54) + (63) + (72) + (81) + (9*5) = 110


Hast du Fragen oder Anmerkungen zum Thema Quersumme? Ich freue mich immer über Feedback und Anregungen! Schreibe gerne einen Kommentar mit deinen Gedanken und Erfahrungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert