Quote (BizepsBodo @ 9 Apr 2017 03:25)
Thx dude :thumbsup:
Yy jemand eine Idee wie man quasi undefiniert groß zahlentypen behandelt?
Habe mir überlegt die Zahl zu "zerhacken" und in int / Double was auch immer Arrays zu verpacken. Es wäre halt ein relativ großer Aufwand um die Zahl zu zerlegen und am Ende wieder zusammen zu setzen. Geht ofc nicht nur um eine, sondern um mehrere tausend zahlen die beliebig lang sind
Ideen?
Gibt in vielen sprachen libs für solche zahlen. Kannst einfach benutzen und hast nicht die Möglichkeit da weitere Fehler einzubauen. Kannst einfach googlen "<Programmiersprache> + arbitrary large numers". Oder "<Sprache> arbitrary precision library". Für C (mit C++ wrapper) z.B.
https://gmplib.org/Nicht empfohlen, trifft wohl her nicht auf deine Situation zu:
wenn es kritisch bezüglich speicherbedarf und/oder laufzeit ist, wäre es wohl besser über das genaue Problem nachzudenken.
Es wäre theoretisch denkbar einfach alle Zahlen in einem byte array aneinander zu hängen.
Zusätzlich man man eine weitere liste mit byte-offsets die immer den start jeder zahl markieren. Eine zahl geht dann einfach von ihrem start bis zum des Nachfolgers.
Wenn man vor allem iterieren will und space sehr kritisch ist, (und es sich lohnt, weil es auch kleine Zahlen zwishcen den sehr großen gibt) könnte man prefix-free codes nutzen (https://en.wikipedia.org/wiki/Prefix_code). Gibt noch 100e Möglichkeiten, aber hängt sehr davon ab, was für Zahlen man hat und was die Anforderungen sind.
Wahrscheinlicher ist auf jeden Fall, dass du mit einer einfachen library am besten bedient bist.