Die Klasse math beinhaltet die eigentlichen Algorithmen in den Methoden ggt und fact. Zusätzlich wurden einige ältere Algorithmen, die zu einem späteren Entwicklungszeitpunkt verworfen wurden, zu Vergleichszwecken darin belassen. Obwohl aus Sicht der Datenkapselung keine Notwendigkeit zur Auslagerung dieser Methoden in eine eigene Klasse bestand, wurde dieser Weg gewählt, um die Wiederverwendbarkeit zu erhöhen, was unwesentlich später zu einer wesentlichen Vereinfachung der Implementation der Testprogramme timetest und timetest2 führte. Folglich besitzt die Klasse math keine interne Datenstruktur und dient einzig als Wrapper um die Methoden welche die Kernalgorithmen implementieren.
Zwei besondere Entwurfsentscheidungen bleiben zu bemerken:
Intern wird für die Darstellung beliebig großer ganzer Zahlen die Klasse BigInteger aus dem package java.math benutzt, da diese einmal vorhanden und getestet sind. Sicherlich wäre es auch möglich gewesen, die entsprechenden Routinen selbst zu schreiben, doch wäre das natürlich der angestrebten Wiederverwendung bereits vorhandenen Codes zuwidergelaufen und hätte unverhältnismässig viel Zeit verschlungen.
Die Methode fact wurde absichtlich so einfach gestaltet. Sicherlich hätte statt dieser einfachen Aneinanderreihung
der zu berechnenden Größen auch ein allgemeiner Algorithmus für den ggT gefunden werden können, der quasi
nebenher die Faktoren und
erzeugt. Doch wurde absichtlich darauf verzichtet, um die Übersichtlichkeit und
Nachvollziehbarkeit der Programmierung zu wahren. Auch hat dies den Entwicklungsprozeß erheblich beschleunigt, ohne
eine absehbare Auswirkung auf die Geschwindigkeit zu haben. Vielmehr ist es wahrscheinlich, daß ein solcher
verbesserter Komplett-Algorithmus bei höherer Komplexität des Codes ein schlechteres Zeitverhalten gezeigt haette.