Autor Beitrag
cgimda
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 13.04.10 21:54 
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:
ausblenden 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
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 13.04.10 23:05 
Siehe BigNum2.

Da hab ich das implementiert. Geht über Bit-Shifting recht einfach.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
cgimda Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 13.04.10 23:50 
Danke für die Antwort. Ich habe dein Algorithmus angeschaut. Außerdem habe ich folgendes bei Wikipedia gefunden: en.wikipedia.org/wiki/Division_(digital). Ich denke das bringt mich weiter.