Modulare-Arithmetik-Rechner (Mod-Rechner)

Ein Rechner für modulare Arithmetik mit 4 Modi: Grundlegendes Mod, modulare Addition/Subtraktion/Multiplikation, modulare Potenzierung (schnelle Potenzierung durch wiederholtes Quadrieren) und modulares Inverses (erweiterter euklidischer Algorithmus). Berechnet negative Mod-Werte und riesige Exponenten mit BigInt exakt.

Grundlegende Eigenschaften der modularen Arithmetik

Eigenschaft Beschreibung
(a + b) mod n = ((a mod n) + (b mod n)) mod n Ob man das Mod vor oder nach der Addition nimmt, das Ergebnis ist genau dasselbe.
(a − b) mod n = ((a mod n) − (b mod n) + n) mod n Da die Subtraktion ein negatives Ergebnis liefern kann, sorgt das abschließende Addieren von n und erneute Mod-n-Nehmen dafür, dass das Ergebnis im Bereich [0, n) bleibt.
(a × b) mod n = ((a mod n) × (b mod n)) mod n Wie bei der Addition ändert das Nehmen des Mods während der Multiplikation nichts am Endergebnis. Diese Eigenschaft bildet die Grundlage für die schnelle Berechnung von Potenzen (wiederholtes Quadrieren).
a und n sind teilerfremd ⇔ es existiert ein Inverses von a modulo n Nur wenn der erweiterte euklidische Algorithmus gcd(a, n) = 1 liefert, existiert ein x (das Inverse), das a × x ≡ 1 (mod n) erfüllt.

Was ist modulare Arithmetik (Mod-Rechnung)?

Modulare Arithmetik ist eine Rechenweise, bei der man sich ausschließlich für den Rest interessiert, den man erhält, wenn man eine Zahl durch eine positive Ganzzahl – den sogenannten Modulus – teilt. Haben zwei Ganzzahlen a und b bei Division durch denselben Modulus n denselben Rest, nennt man sie "kongruent modulo n" und schreibt a ≡ b (mod n). Dieses Tool bündelt die vier gebräuchlichsten Rechnungen rund um die Kongruenz in den Modi "Grundlegendes Mod", "Addition/Subtraktion/Multiplikation", "Potenzierung" und "Inverses".

Sämtliche Berechnungen laufen intern über den nativen BigInt-Typ von JavaScript, sodass auch Potenzen mit mehreren hundert Stellen im Exponenten oder Additionen und Multiplikationen sehr großer Ganzzahlen ohne Rundungsfehler exakt berechnet werden. Geben Sie eine negative Zahl ein, normalisiert das Tool das Ergebnis stets gemäß der mathematischen Definition der Kongruenz (der Rest liegt immer im Bereich von 0 bis n − 1), sodass Sie sich nicht mit den je nach Programmiersprache unterschiedlichen Verhaltensweisen des Modulo-Operators herumschlagen müssen.

So verwenden Sie den Mod-Rechner

  1. Modus auswählen Wählen Sie zwischen "Grundlegendes Mod", "Addition/Subtraktion/Multiplikation", "Potenzierung" und "Inverses" die gewünschte Berechnungsart aus.
  2. Ganzzahlen eingeben Geben Sie je nach gewähltem Modus a, b und den Modulus n ein – oder bei der Potenzierung Basis und Exponent. Negative Ganzzahlen können Sie direkt eingeben.
  3. Operator festlegen (nur im Modus Addition/Subtraktion/Multiplikation) Wählen Sie aus dem Dropdown-Menü Addition, Subtraktion oder Multiplikation aus.
  4. Ergebnis ablesen Mit jeder Eingabe wird automatisch neu gerechnet, und Formel sowie Ergebnis erscheinen sofort. Existiert kein Inverses, wechselt die Anzeige zu einer entsprechenden Fehlermeldung.
  5. Eingaben zurücksetzen Über die Schaltfläche "Zurücksetzen" leeren Sie die Eingabefelder aller vier Modi auf einmal.

Tipps für die Nutzung

  • Das Verhalten von Mod bei negativen Zahlen unterscheidet sich je nach Programmiersprache. Dieses Tool folgt der mathematischen Definition (das Ergebnis liegt stets zwischen 0 und n − 1), sodass -7 mod 3 gleich 2 ist, nicht -1.
  • Der Potenzierungsmodus verwendet wiederholtes Quadrieren, sodass er auch bei Exponenten mit Hunderten von Stellen sofort ein Ergebnis liefert. Derselbe Algorithmus wird bei der Ver- und Entschlüsselung von RSA eingesetzt.
  • Die Uhrzeit ist ein alltägliches Beispiel für modulare Arithmetik: Rechnet man "15 Uhr" in das 12-Stunden-Format um, ergibt sich 15 mod 12 = 3 Uhr.
  • Der Inverse-Modus funktioniert, solange a und n teilerfremd sind (ihr größter gemeinsamer Teiler ist 1), selbst wenn n keine Primzahl ist.
  • Im Wettbewerbsprogrammieren wird häufig verlangt, die Antwort modulo einer großen Primzahl wie 1.000.000.007 anzugeben, statt der riesigen Rohzahl. Der Potenzierungsmodus dieses Tools eignet sich auch zum manuellen Nachrechnen solcher Aufgaben.

Anwendungsfälle der modularen Arithmetik

Public-Key-Kryptografie wie RSA nachvollziehen

Ver- und Entschlüsselung bei RSA bestehen im Kern darin, eine riesige Zahl zu potenzieren und den Rest modulo n zu bilden. Erhöhen Sie im Potenzierungsmodus Exponent und Modulus, um die Geschwindigkeit des wiederholten Quadrierens selbst zu erleben.

Das Funktionsprinzip von Hash-Funktionen verstehen

Viele Hash-Funktionen falten ihre Zwischenwerte über eine Modulo-Operation auf einen festen Wertebereich zusammen. Im Modus Addition/Subtraktion/Multiplikation lässt sich Schritt für Schritt verfolgen, wie sich der Rest bei jeder Zwischenrechnung verändert.

Prüfziffern von ISBN, Kreditkarte oder IBAN nachrechnen

Prüfziffern wie bei ISBN, Kreditkartennummern oder Bankkontonummern ergeben sich aus der gewichteten Summe der einzelnen Ziffern modulo einem festgelegten Modulus. Der Modus "Grundlegendes Mod" eignet sich hervorragend, um solche Prüfziffern von Hand nachzurechnen.

Wochentage und Kalenderzyklen berechnen

Fragen wie "Welcher Wochentag ist in n Tagen?" oder "In welchem Zyklus wiederholen sich Schaltjahre?" lassen sich als Kongruenz modulo 7 beziehungsweise modulo 4 formulieren und damit exakt beantworten.

Lösungen im Wettbewerbsprogrammieren gegenprüfen

Bei der häufigen Aufgabenstellung "Gib das Ergebnis modulo 1.000.000.007 aus" können Sie mit dem Potenzierungs- und dem Addition/Subtraktion/Multiplikation-Modus überprüfen, ob Ihre eigene Implementierung das richtige Ergebnis liefert.

Glossar zur modularen Arithmetik

Kongruenz
Eine Beziehung der Form a ≡ b (mod n), die besagt, dass a und b bei Division durch n denselben Rest ergeben. Das Zeichen "≡" statt "=" macht deutlich, dass nicht die Werte selbst, sondern nur ihre Reste übereinstimmen.
Modulus
Die Zahl, durch die geteilt wird. In diesem Tool geben Sie dafür eine Ganzzahl ab 1 an. Ändert sich der Modulus, ändert sich auch, welche Zahlen zueinander kongruent sind.
Restwert (Modulo-Operation)
Die tatsächliche Berechnung des Rests, der beim Teilen einer Zahl durch den Modulus entsteht. Nach mathematischer Definition liegt das Ergebnis stets zwischen 0 und dem Modulus minus eins.
Modulares Inverses
Eine Ganzzahl x, die a · x ≡ 1 (mod n) erfüllt. Innerhalb der modularen Arithmetik erzielt man mit der Multiplikation durch das Inverse denselben Effekt wie mit einer "Division durch a".
Teilerfremd
Zwei Ganzzahlen sind teilerfremd, wenn ihr größter gemeinsamer Teiler gleich 1 ist. Nur wenn a und n teilerfremd sind, existiert ein Inverses von a modulo n.
Erweiterter euklidischer Algorithmus
Ein Verfahren, das gleichzeitig mit der Bestimmung des größten gemeinsamen Teilers auch ein Zahlenpaar (x, y) findet, das a · x + n · y = ggT(a, n) erfüllt. Dieses Verfahren steckt hinter der Berechnung im Inverse-Modus.
Schnelle Potenzierung (Square-and-Multiply)
Ein Algorithmus, der den Exponenten binär zerlegt und die Basis wiederholt quadriert, wobei nur an den relevanten Binärstellen mit dem Zwischenergebnis multipliziert wird. So kommt man mit einer Anzahl von Multiplikationen aus, die proportional zur Stellenzahl des Exponenten ist. Er wird im Potenzierungsmodus verwendet.
Modulare Exponentiation
Die Berechnung, bei der eine Basis potenziert und anschließend der Rest modulo n gebildet wird. Sie ist die zentrale Operation bei Ver- und Entschlüsselung im RSA-Verfahren und entspricht dem Potenzierungsmodus dieses Tools.

Häufig gestellte Fragen

Nach der mathematischen Definition der Kongruenz liegt das Ergebnis von Mod stets zwischen 0 und dem Modulus (n) minus eins. Deshalb ergibt -7 mod 3 den Wert 2 (da -7 = -3×3 + 2), nicht die -1, die der `%`-Operator von JavaScript direkt zurückgibt. Dieses Tool folgt der mathematischen Definition.

Ein modulares Inverses wird verwendet, wenn man innerhalb der modularen Arithmetik eine Operation ausführen möchte, die einer "Division" entspricht. Da dort keine gewöhnliche Division definiert ist, erzielt man durch Multiplikation mit dem Inversen von a denselben Effekt wie eine Division durch a. Es wird häufig bei der RSA-Schlüsselerzeugung (Ableitung des privaten Schlüssels) sowie bei Aufgaben im Wettbewerbsprogrammieren verwendet, bei denen Brüche vorkommen und "die Antwort modulo einer großen Primzahl anzugeben ist".

Dieses Tool nutzt einen Algorithmus namens wiederholtes Quadrieren, sodass selbst bei Exponenten mit Hunderten von Stellen nur eine Anzahl von Multiplikationen nötig ist, die proportional zur Ziffernzahl (genauer: zur Anzahl der Binärstellen) des Exponenten ist. Anders als beim naiven Berechnen der vollständigen Potenz vor dem Mod-Nehmen liegt das Ergebnis sofort vor.

Ein Inverses von a modulo n existiert nur, wenn der größte gemeinsame Teiler (ggT) von a und n gleich 1 ist, das heißt, wenn beide teilerfremd sind. Bei a=4 und n=8 zum Beispiel ist ggT(4, 8)=4, also nicht 1, weshalb es keine ganze Zahl x gibt, die 4 × x ≡ 1 (mod 8) erfüllt. Ist n eine Primzahl, existiert immer ein Inverses, solange a kein Vielfaches von n ist.

In der Praxis werden beide Begriffe fast synonym verwendet, streng genommen ist "Kongruenz" jedoch ein mathematisches Konzept, das die Beziehung zweier Zahlen mit demselben Rest beschreibt, wie in a ≡ b (mod n), während sich die "Modulo-Operation" auf die tatsächliche Berechnung des Rests bezieht, wenn a durch n geteilt wird. Dieses Tool befasst sich genau mit dieser Berechnung des Rests.
Tool-kun

Übrigens – die "Uhrzeit-Arithmetik" hinter moderner Kryptografie

Modulare Arithmetik (Kongruenz) wird oft als "Uhrzeit-Arithmetik" (clock arithmetic) bezeichnet. Bei einer 12-Stunden-Uhr wird 13 Uhr als "gleich" mit 1 Uhr behandelt – genau das ist die Kongruenz 13 ≡ 1 (mod 12), eine Idee, die sich nur auf den Rest konzentriert, der bleibt, wenn eine Zahl durch einen Modulus (hier 12) geteilt wird. Der deutsche Mathematiker Carl Friedrich Gauß systematisierte die Kongruenznotation "≡" in seinem 1801 erschienenen Werk Disquisitiones Arithmeticae und machte diese Idee damit zu einem Standardwerkzeug der modernen Mathematik.

Diese scheinbar einfache Operation bildet das Fundament der modernen Internetsicherheit. Bei Public-Key-Kryptosystemen wie RSA ist die "modulare Potenzierung" – das Potenzieren einer riesigen Zahl und anschließende Nehmen des Rests modulo n – die zentrale Operation bei Ver- und Entschlüsselung. Da Exponent und Modulus jeweils Hunderte von Stellen haben können, würde ein naives Berechnen der vollständigen Potenz vor dem Rest-Nehmen den Rechenaufwand explodieren lassen. Wiederholtes Quadrieren dagegen erfordert nur eine Anzahl von Multiplikationen, die proportional zur Ziffernzahl des Exponenten ist, wodurch es praktikabel wird.

Auch die Berechnung modularer Inverser mittels des erweiterten euklidischen Algorithmus ist eine grundlegende Technik, die in der gesamten Informatik zum Einsatz kommt – von der Kryptografie über die Codierungstheorie bis zum Design von Hash-Funktionen. Dass eine "über 2000 Jahre alte Arithmetik" und "modernste Sicherheitstechnologie" auf demselben mathematischen Fundament beruhen, ist ein eindrucksvolles Symbol für die Universalität der Zahlentheorie.