Modulo mit Listen

Lil-rich

Erfahrenes Mitglied
Tach,

hab da mal ein wieder ein Problem...

Ich bin gerade dabei mit sehr großen Zahlen zu hantieren (teilweise mehrere hundert Stellen) und habe das nun umgesetzt mit Listen (List<int>), sodass jedes Listenelement genau eine Ziffer enthält.
Nun versuche ich gerade ein paar Grundrechenregeln/-funktionen zu erstellen.

Ich habe bis jetzt: Multiplizieren, Summieren und Differenzieren.

Jetzt will ich noch das Teilen implementieren, was sich jedoch recht schwierig gestaltet... Angenommen ich will die Zahl 22 durch 3 teilen, dann hab ich ja eine Liste (Start->2->2->Abschluss) und eine Zahl (hier 3).
Teile ich nun 2 durch 3, gehts nicht, also hätte ich prinzipiell so programmiert, dass er sich die 2 merkt und als nächstes "22" durch 3 teilt. Da entsteht aber das Problem:
Das ganze läuft auf Primzahlenrechnungen hinaus. Wenn ich jetzt aber eine Primzahl mit 300 Stellen habe und die durch 3 geteilt werden soll (mit Rest, also Modulo), dann kann ich ja leider nicht alle Zahlen merken zwecks der Integer-Begrenzung (deshalb ist das Ganze auch mit Listen realisiert, was ich nun auch nicht mehr ändern kann und auch nicht will).

Hat vielleicht jemand eine Lösung dafür? Oder hab ich da grad irgendwo nen Denkfehler?
Wäre für jede Hilfe dankbar...
 
Kurzer Einwurf: Ist es nicht bisschen Verschwendung 4 Bytes für die Ziffern 0-9 zu verwenden? Wäre da nicht ein byte-Array besser? Oder einfach ein Array von Integern wobei dann einfach immer die nächsthöheren 32 Bits verwendet werden?

/Edit:
Ein Vergleich: Eine 100-stellige Zahl braucht bei dir mindestens 400 Byte Speicher, wenn du ein binäres Array machst schaffst du es in 42 Bytes.
 
Zuletzt bearbeitet:
Prinzipiell hast du Recht. Aber momentan will ich es nicht ändern, da so die Ausgabe bzw das Testen viel einfacher von Statten geht.
Vielleicht werde ich es nochmal ändern, wenn ich soweit fertig bin.

(Ich weiß, eigentlich wäre es besser, das Ganze jetzt zu ändern, aberich wills dennoch erstmal fertig haben :-( )



EDIT: Denkblockade hat sich gelöst... Eigentlich ganz easy >:-( Man muss isch nur mal überlegen, wie ne Division eigentlich funktioniert ;) Einfach den Divisor immer wieder von der zu teilenden Zahl abziehen und dabei mitzählen. Und die Subtraktionsfunktion hab ich ja bereits!

Trotzdem danke an Cromon für den Tipp!
/Erledigt
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück