Hallo,
ich habe eine Klasse mit der es möglich sein soll mit großen Zahlen zu rechnen. Diese Klasse sieht am Anfang so aus:
C#-Quelltext
1: 2: 3: 4:
| class Number { uint[] value; } |
Die Zahl wird also in einen Array von Typ uint gespeichert. Ich habe alle Rechenoperationen ungesetzt, nur bei der Division komme ich nicht weiter.
Der Divisionsalgorithmus aus der Grundschule kann nur angewendet werden, wenn es sich bei dem Divisor um eine normale Zahl handelt, also er darf kein Array von Typ uint sein. Das liegt daran, dass der Divisor immer als eine Zahl betrachtet wird.
Kennt jemand einen Divisionsalgorithmus, bei dem auch mit großen Divisor gerechnet werden kann? (Vielleicht so ähnlich, wie der Multiplikationsalgorithmus aus der Grundschule, bei den der Multiplikand nicht als eine Zahl betrachtet wird, sondern mit seinen Ziffern gerechnet wird.
Unter
www.codeproject.com/KB/cs/biginteger.aspx gibt es bereits eine Klasse, wo so ein Algorithmus umgesetzt wurde. Es würde schon helfen, wenn jemand weiß wie dieser Algorithmus heißt. Nur durch betrachten des Codes ist der Algorithmus schwer nachzuvollziehen.
Hier noch ein paar Erklärungen, falls das Problem noch nicht klar ist:
c = a / b (b ist Divisor und dieser darf kein Array sein, weil er immer als eine Zahl betrachtet wird)
c = a * b (b ist Multiplikand und hier ist ein Array kein Problem, da immer mit den Ziffern gerechnet wird)
uint[] a;
uint[] b;
uint c;
a / c; // kann mit Divisionsalgorithmus aus der Grundschule umgesetzt werden
a / b; // dafür suche ich einen Algorithmus