Inhalt:
Die Ganzzahldivision liefert ein Ergebnis und einen Rest. Bei manchen Problemen interessieren wir uns ausschließlich für den Rest!
Problemstellung aus dem Alltag:
Problemstellung aus der Informatik:
Die Zahl der Änderungen wird in einer Zahl angegeben - diese wird immer höher und höher - muss aber irgendwie auf den Zahlenbereich 0 .. 15 (16 Möglichkeiten) heruntertransformiert werden.
Die Lösung bietet die MODULO-Rechnung (der Rest der Ganzzahldivision).
Alle Zahlen, die bei Division durch 16 denselben Rest ergeben, nennt man eine Restklasse MODULO 16.
Beispiel:
Definition: Die kleinste positive Zahl der Restklasse ist ihr Repräsentant. Jedes Element der Restklasse kann in der modularen Arithmetik durch ein beliebiges anderes ersetzt werden.
Die Restklassen bilden algebraische Strukturen und erfüllen teils weitgehende mathematische Gesetzmäßigkeiten.
Satz:
Übung: Überprüfe:
Die vorgestellte Lösung wurde mit DERIVE erstellt. |
![]() |
Division ist die inverse Operation der Multiplikation. Jede Division kann daher beantwortet werden, indem man die "fehlende " Zahl bei der zugehörigen Multiplikation findet.
Beispiel:
9 * 5 = 13 mod 16 | 9 * 5 = 45, 45 DIV 16 = 2, Rest 13 |
daraus folgt | |
9 = 13 / 5 mod 16 | wobei das "Dividiert-Zeichen" hier etwas anders interpretiert werden muss als gewohnt. Die Division 13 / 5 hat ausnahmsweise gar nichts mit einem Bruch zu tun! |
Wir wollen nun versuchen, wie man auf die Zahl 9 als Ergebnis kommen kann. |
|
x = 13 / 5 mod 16 | Wir wollen x berechnen und multiplizieren beide Seiten mit 5. |
5x = 13 mod 16 | Wir suchen x, indem wir die Reste 0 .. 15 für x einsetzen und ausprobieren, bei welchem Rest die Gleichung erfüllt ist. |
5 * 1 = 5 mod 16 5 * 2 = 10 mod 16 5 * 3 = 15 mod 16 5 * 4 = 4 mod 16 5 * 5 = 9 mod 16 5 * 6 = 14 mod 16 5 * 7 = 3 mod 16 5 * 8 = 8 mod 16 5 * 9 = 13 mod 16 |
Leider ist dieses Verfahren nur für einen kleinen modulus geeignet. Für höhere Zahlen braucht man ein besseres Verfahren. Dieses kann mit Hilfe des Erweiterten Euklidischen Algorithmus durchgeführt werden. |
Übung: Berechne x:
|
![]() |
modulares Potenzieren kann auf wiederholte Multiplikation reduziert werden.
Beispiel: 7^4 mod 12 = ?
Eine - scheinbar einfache - Methode lautet: berechne 7^4 = und berechne anschließend 2401 mod 12 = 1. Diese Methode funktioniert zwar sehr gut bei kleineren Zahlen, stößt aber bei sehr hohen Zahlen an Grenzen.
Eine zweite Möglichkeit: 7^4 = 7^2 * 7^2 - wir verwenden die Regeln des modularen Multiplizierens!
Satz:
ak mod n = ((a mod n)k mod n)
Tipp: Anstatt zuerst die hohe Potenz auszurechnen und dann erst den Rest zu berechnen, empfiehlt es sich, die hohe Potenz in kleinere zu zerlegen, den Rest zu berechnen und das Ergebnis über modulare Multiplikation zu finden.
Beispiel: 82^17 mod 20 = ?
Die Lösung lautet 12.
Hinweis: Bei vielen Computeralgebrasystemen gibt es neben dem "normalen" MOD(n, m) - Befehl noch für Berechnungen der Form n^k mod m einen Befehl POWER_MOD(n, k, m), der die Recheneffizienz bei Berechnung hoher modularer Potenzen erheblich steigert.
Dieser Befehl verwendet den Square and Multiply-Algorithmus, wobei der Exponent in 2er-Potenzen zerlegt wird.
Übung:
Überprüfe mit Hilfe eines Computeralgebrasystems deine Berechnungen! |
![]() |
© letzte Änderung am 7. November 2005