Division mit Rest
Die Division mit Rest oder der Divisionsalgorithmus ist ein mathematischer Satz
aus der Algebra und der Zahlentheorie. Er besagt,
dass es zu zwei Zahlen
und
eindeutig bestimmte Zahlen
und
gibt, für die
gilt. Die Zahlen
und
lassen sich durch die schriftliche
Division ermitteln.
Die Division mit Rest ist auch für Polynome definiert. Die allgemeinste mathematische Struktur, in der es eine Division mit Rest gibt, ist der euklidische Ring.
Natürliche Zahlen
Wenn zwei natürliche
Zahlen, der Dividend
und der Divisor
(ungleich 0), mit Rest dividiert werden sollen, wenn also
berechnet werden soll, so wird gefragt, wie man die Zahl
als Vielfaches von
und einem „kleinen Rest“ darstellen kann:
Hier ist
der so genannte Ganzzahlquotient und
der Rest. Entscheidende Nebenbedingung ist, dass
eine Zahl in
ist. Hierdurch wird
eindeutig bestimmt.
Der Rest ist also die Differenz zwischen dem Dividenden und dem größten Vielfachen des Divisors, das höchstens so groß ist wie der Dividend. Ein Rest ungleich 0 ergibt sich folglich genau dann, wenn der Dividend kein Vielfaches des Divisors ist. Man sagt auch: Der Dividend ist nicht durch den Divisor teilbar, weshalb ein Rest übrigbleibt.
Liegt der Divisor fest, so spricht man beispielsweise auch vom Neunerrest einer Zahl, also dem Rest, der sich bei Division dieser Zahl durch neun ergibt.
Beispiele
- 7 : 3 = 2, Rest 1, da 7 = 3 × 2 + 1 („drei passt zweimal in sieben und es bleibt eins übrig“ – der Rest ist also eins)
- 2 : 3 = 0, Rest 2, da 2 = 3 × 0 + 2
- 3 : 3 = 1, Rest 0, da 3 = 3 × 1 + 0
Die hier verwendete Schreibweise wird so in Grundschulen und teilweise auch in weiterführenden Schulen verwendet, ist fachwissenschaftlich aber problematisch und nicht ganz korrekt, da sie die Transitivität der Äquivalenzrelation „=“ verletzt. Man erhält bei dieser Schreibweise z.B. für die unterschiedlichen Quotienten 7:3 und 9:4 scheinbar das gleiche Ergebnis (2, Rest 1). Oft wird daher die Schreibweise 7 : 3 = 2 + 1 : 3 vorgezogen.
Bestimmung des Restes für spezielle Teiler
Häufig kann man den Rest an der Dezimaldarstellung ablesen:
- Bei Division durch 2: Der Rest ist 1, wenn die letzte Ziffer ungerade ist, bzw. 0, wenn die letzte Ziffer gerade ist.
- Bei Division durch 3: Der Rest ist gleich dem Rest, den die iterierte Quersumme bei Division durch 3 lässt.
- Bei Division durch 5: Der Rest ist gleich dem Rest, den die letzte Ziffer bei Division durch 5 lässt.
- Bei Division durch 9: Der Rest ist gleich dem Rest, den die iterierte Quersumme bei Division durch 9 lässt.
- Bei Division durch 10: Der Rest ist die letzte Ziffer.
Ähnliche, wenn auch etwas kompliziertere Regeln existieren für etliche weitere Teiler.
Ganze Zahlen
Ist
eine negative ganze
Zahl, dann gibt es keine natürlichen Zahlen zwischen 0 und
,
die für den Rest
in Frage kämen. Unter den vielen Möglichkeiten sind die folgenden drei die
interessantesten:
- Stattdessen kann man fordern, dass der Rest
zwischen 0 und
(dem Betrag von
minus 1) liegt.
- Alternativ kann man aber auch verlangen, dass der Rest
zwischen
und 0 liegt, also dasselbe Vorzeichen hat wie
- Eine dritte Möglichkeit ist, den betragskleinsten Rest
zu wählen. Diese Variante liefert für
die beste Näherung
für
Beispiel
Dividiert man negative Zahlen, ergibt sich folgendes Bild:
7 : 3 = 2 Rest 1 −7 : 3 = −2 Rest −1
Übertragen auf negative Teiler, folgt:
7 : −3 = −2 Rest 1 −7 : −3 = 2 Rest −1
(Hierbei wird für die Wahl von Quotient und Rest zunächst so getan, als gäbe es keine Vorzeichen, sie werden sozusagen nach der „eigentlichen Berechnung wieder hinzugefügt“). Als Ganzzahlquotient wird hier immer ein Wert bestimmt, dessen Betrag nicht größer als der Betrag des (rationalen) Quotienten ist. Der Rest und sein Vorzeichen folgen aus der Wahl des Quotienten.
Wie groß der Rest bei einer Division nun ausfällt, ist eigentlich Geschmackssache. Denn es steht jedem frei, nur einen Teil einer gegebenen Größe zu teilen, den verbleibenden Rest erklärt er einfach zum „Rest“. Lassen wir hierbei auch zu, dass „Schulden“ gemacht werden dürfen, sind beispielsweise alle folgenden Ergebnisse zulässig:
7 : 3 = 1 Rest 4 7 : 3 = 2 Rest 1 7 : 3 = 3 Rest −2
oder
−7 : 3 = −1 Rest −4 −7 : 3 = −2 Rest −1 −7 : 3 = −3 Rest 2
Zur Normierung wird in der Mathematik die Konvention verwendet, die Vorzeichen der Reste aus denen der Teiler zu beziehen, wie in den folgenden Beispielen dargestellt:
7 : 3 = 2 Rest 1 −7 : 3 = −3 Rest 2 7 : −3 = −3 Rest −2 −7 : −3 = 2 Rest −1
Hierbei kann die Zugehörigkeit einer Zahl zu einer Restklasse direkt am Rest abgelesen werden.
Implementierung in Computersystemen
DIV- und MOD-Befehle bzw. Operatoren (für ganzzahlige Division und Restbildung) sind in den meisten Programmiersprachen (und sogar in CPUs) genau diesem Alltagsansatz entsprechend implementiert.
Einige Programmiersprachen und Computeralgebrasysteme tragen dieser Vielfalt von Konventionen Rechnung, indem sie zwei Modulo- oder Rest-Operatoren zur Verfügung stellen. Im Beispiel Ada hat:
- (A rem B) dasselbe Vorzeichen wie A und einen Absolutwert kleiner als der Absolutwert von B
- (A mod B) dasselbe Vorzeichen wie B und einen Absolutwert kleiner als der Absolutwert von B
Modulo
Modulo berechnet den Rest
der Division
geteilt durch
.
Man kann eine Funktion definieren, die jedem Zahlenpaar
einen eindeutigen Teilerrest
zuordnet. Diese nennt man Modulo (von lat. modulus, Kasus Ablativ, also: ‚(gemessen) mit
dem (kleinen) Maß (des …)‘) und kürzt sie
meistens mit mod ab.
In vielen Programmiersprachen wird die Funktion durch %
(Prozentzeichen)
dargestellt und als Operator
behandelt. Frühe Programmiersprachen kannten den Operator mod noch nicht,
nur den Datentyp des ganzzahligen
Werts integer
(abgekürzt INT
); darum wurde der Divisionsrest nach der Formel
errechnet und wegen der damaligen Rechenungenauigkeit beim Dividieren dann auf
den ganzzahligen Wert gerundet.
Wir betrachten die Funktion
- Die Gaußklammer
bezeichnet die größte ganze Zahl, die nicht größer als die Zahl in der Gaußklammer ist, also, falls positiv, der ganze Anteil ohne die Nachkommastellen. Hier gilt stets
für alle
- aber im Allgemeinen ist
z.B.
- Ist
positiv, so ist
für alle
Neben dieser „mathematischen Variante“ wird oft auch eine ähnliche Funktion als Modulo bezeichnet, die für negative Argumente unterschiedliche Ergebnisse liefert und „symmetrische Variante“ genannt wird:
-
- Dabei bezeichnet
den zur Null hin gerundeten Quotienten
, gegeben durch
, wobei
die Vorzeichenfunktion bezeichnet. Für diese Variante gilt
- aber im Allgemeinen
z.B.
hat stets dasselbe Vorzeichen wie
, oder es gilt
.
Gilt
und
,
so ergeben beide Varianten dasselbe Ergebnis. In Programmiersprachen ist die
implementierte Variante nicht
einheitlich. So verwenden Ruby,
Perl,
Python,
Excel und der Rechner
der Googlesuche die mathematische Variante, wohingegen C, Java, JavaScript und PHP die symmetrische einsetzen, was
besonders wichtig bei Portierungen
ist.
Steht in einer Sprache wie C(++) oder Java nur die symmetrische Variante zur Verfügung, kann man Ergebnisse nach der mathematischen Variante erhalten mit:
=
((a % b) + b) % b
,
wobei %
die symmetrische Modulooperation bezeichnet und
die mathematische.
Beispiele
da
(„3 passt fünfmal in 17 und es bleiben 2 übrig“ – der Rest ist also 2)
da
da
Aus
folgt nicht
,
sondern nur, dass sich
und
um ein ganzzahliges Vielfaches von
unterscheiden, also:
mit
.
Eine derartige Gleichung kann auch einfacher mit Hilfe der in der Zahlentheorie
verbreiteten Kongruenzrelation
geschrieben werden:
oder auch
Üblich ist auch die Schreibweise
sowohl mit als auch ohne die Klammer, und zwar nicht nur, wo dies ohne die
Klammer bei Betrachtung als Restoperator stimmen würde, etwa
sondern auch sonst:
oder gar
Hintergrund ist hier, dass man dann die durch den Repräsentanten 1 eindeutig
bestimmte Äquivalenzklasse
der zu 1 modulo m kongruenten Zahlen als ein Element des Restklassenrings
versteht; in diesem Sinne sind die beiden Ausdrücke als verschiedene
Repräsentanten derselben Äquivalenzklasse tatsächlich gleich. In der
Praxis ergibt sich kein Unterschied zur Verwendung des Kongruenzsymbols.
Grundrechenarten modulo einer natürlichen Zahl
Ist die Zahl m eine Primzahl, so kann man die aus den reellen Zahlen gewohnten Grundrechenarten mit anschließender Modulo-Berechnung anwenden und erhält einen sogenannten endlichen Körper.
Beispiele
- Modulo 3:
- Modulo 5:
Verallgemeinerung: Reelle Zahlen
Sind
und
reelle Zahlen,
ungleich 0, dann kann man eine Division mit Rest folgendermaßen definieren: Der
ganzzahlige Quotient
und Rest
im halboffenen Intervall
sind diejenigen (eindeutig bestimmten) Zahlen, die die Gleichung
erfüllen.
Auch hier gibt es die Alternativen, dem Rest dasselbe Vorzeichen wie
zu geben oder den betragskleinsten Rest zu wählen. Letztere Alternative
entspricht der Rundung: Die Division mit Rest
von
durch 1 liefert eine ganze Zahl
und eine reelle Zahl
mit Betrag kleiner oder gleich 1/2, die die Gleichung
erfüllen. Die Zahl
ist der auf ganze Zahlen gerundete Wert von
.
Es ist zu beachten, dass hierbei der Quotient nicht aus derselben Menge (der reellen Zahlen) genommen wird wie Divisor und Dividend.
Polynome
Bei der Division mit Rest für Polynome
muss das als Divisor auftretende Polynom
aus dem Polynomring
(über
,
einem kommutativen
Ring mit
)
eine Voraussetzung erfüllen: Der Leitkoeffizient von
muss eine Einheit
von
sein (insbes. ist
nicht das Nullpolynom).
Unter dieser Bedingung gibt es zu jedem
eindeutig bestimmte Polynome
mit
Dabei wird dem Nullpolynom ein kleinerer Grad
als jedem anderen Polynom gegeben, beispielsweise .
- Beispiel
Die Polynome
und
lassen sich durch Polynomdivision
bestimmen.
Anwendung
Programmierung
Die Division mit Rest (Modulo) wird in der Programmierung relativ häufig
verwendet. Der entsprechende Operator heißt in unterschiedlichen
Programmiersprachen oft mod
oder %
. Man kann etwa
prüfen, ob eine gegebene Zahl
gerade ist, indem man folgende Abfrage durchführt:
if ((x mod 2) ==
0)
. Modulo kann man auch nutzen, wenn man in einer Schleife
lediglich bei jedem -ten
Schleifendurchlauf einen speziellen Programmcode ausführen will. Auch bei vielen
Berechnungen und Algorithmen ist der Operator sinnvoll einsetzbar. Allgemein
kann man mit
mod
prüfen, ob eine Zahl durch eine andere genau
teilbar ist: Nur dann liefert der Modulo-Operator den Wert 0. Des Weiteren muss
man in der Programmierung oft auf ganze Vielfache einer Zahl ergänzen
(z.B. 4 Bytes) und kann durch den Modulo errechnen, wie viele „Pad-Bytes“
noch fehlen. Durch die Funktion divMod
werden Ganzzahlquotient und Rest zusammen berechnet.
- Beispiel
- Man programmiert eine Uhr und hat die Zeit als Sekundenwert seit 0 Uhr gegeben. Dann kann man den Sekundenwert mod 3600 berechnen. Ist dieser gleich 0, so weiß man, dass eine volle Stunde angefangen hat. Diese Information kann man nutzen, um z.B. ein akustisches Signal (Gong zur vollen Stunde) auszulösen. Mit der Berechnung Sekundenwert mod 60 erhält man die Sekunden seit der letzten vollen Minute, die oftmals von Digitaluhren als letzte zwei Stellen angezeigt werden.
Weitere Anwendungen
- Berechnung der Prüfziffer der Internationalen Standardbuchnummer
- Prüfsummen-Formel Luhn-Algorithmus zur Bestätigung von Identifikationsnummern wie Kreditkartennummern und kanadische Sozialversicherungsnummern
- Prüfsummenberechnung bei CRC und FEC auf Ganzzahl- oder Binärbasis
- Kalenderberechnung (die relativ komplizierte Berechnung des Osterdatums)
- Berechnung der Prüfsumme der Internationalen Bankkontonummer (IBAN)
- In der Kryptografie, beim Diffie-Hellman-Schlüsselaustausch oder beim RSA-Kryptosystem
- Berechnung der Geometrie von Schröderdiffusoren
- Bildung binärer Fraktale
Siehe auch
- Hashfunktion und die dort genannten Verfahren
- Kleiner fermatscher Satz
- Satz von Euler
Literatur
- Kristina Reiss, Gerald Schmieder: Basiswissen Zahlentheorie. Eine Einführung in Zahlen und Zahlenbereiche. Springer-Verlag, Berlin u.a. 2005, ISBN 3-540-21248-5.
- Peter Hartmann: Mathematik für Informatiker. Ein praxisbezogenes Lehrbuch. 4. überarbeitete Auflage. Vieweg, Wiesbaden 2006, ISBN 3-8348-0096-1.



© biancahoegel.de
Datum der letzten Änderung: Jena, den: 21.12. 2022