Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Grote gehele getallen in c  (gelezen 1885 keer)

Offline idefix

  • Lid
Grote gehele getallen in c
« Gepost op: 2008/07/08, 20:11:11 »
hoe kun je grote gehele getallen maken en gebruiken (basisbewerkingen: optellen, aftrekken, delen, vermenigvuldigen, machtsverheffen) in c?  Met groot bedoel ik in de grootte-orde 10**300 of groter...
Iemand een idee, een hint?
Support bacteria. They're the only culture some people have.

Grote gehele getallen in c
« Reactie #1 Gepost op: 2008/07/08, 20:22:27 »
Hmm.. normaal gesproken zou ik float gebruiken voor getallen in de orde van 10^300. Maar ik neem aan dat je met hele getallen bedoeld dat je het precies wil hebben. Soms helpt het om te vertellen waar je het precies voor nodig hebt. Ik zou me kunnen voorstellen dat het niet al te moeilijk is om voor de basisbewerkingen een stel functies te schrijven die de bewerkingen op een (decimale) string uitvoert, net zoals je het met hoofdrekenen gewend bent. Dit zou het natuurlijk enorm veel langzamer maken. Of misschien zijn hier libraries voor, maar dan ken ik ze niet.

Offline idefix

  • Lid
Grote gehele getallen in c
« Reactie #2 Gepost op: 2008/07/08, 20:40:55 »
dank je, kelderkeuken, het is inderdaad de bedoeling grote integers (geen floats) te gebruiken, maar het moet idd precies zijn.
Support bacteria. They're the only culture some people have.

Grote gehele getallen in c
« Reactie #3 Gepost op: 2008/07/08, 20:50:40 »
Dus, is snelheid een bezwaar? Zo niet, dan kan je een loop maken die van achter naar voren door een string loopt en steeds een char uit een string pikt, die vergelijkt met een char op dezelfde positie in een andere string, deze twee cijfers bij elkaar optelt, en zonodig een onthoudt voor de volgende stap in de loop, stapsgewijs het antwoord schrijvend in een derde string. Op deze manier zou je schier-oneindig grote getallen bij elkaar op kunnen tellen. Hetzelfde geldt denk ik voor de andere bewerkingen die je noemde. (Kijk voor vermenigvuldiging wellicht naar vedische wiskunde om het in een enkele loop/kruislings te kunnen doen.) Dezelfde principes kunnen natuurlijk ook gebruikt worden bij een array van int's in plaats van chars, maar dan moet je er waarschijnlijk harder over nadenken.

Dit sluit niet uit dat er handigere manieren zijn of wellicht heeft iemand hier al een goede library voor geschreven, maar desalniettemin zou het moeten werken.

Edit: moest toch even vedic math noemen omdat het zo tof is - toch maf dat ze iedereen op een omslachtige manier leren te vermenigvuldigen, alleen omdat het zogenaamd makkelijker is.

Offline profoX

  • Lid
    • wesley
    • Lionslink
Grote gehele getallen in c
« Reactie #4 Gepost op: 2008/07/08, 22:35:52 »
GMP is wat je zoekt. http://gmplib.org/
Zeg even wat je precies wil, en ik help je op weg.
Ik heb GMP al vaak gebruikt voor hele grote integers :)
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Offline idefix

  • Lid
Grote gehele getallen in c
« Reactie #5 Gepost op: 2008/07/10, 20:06:16 »
Citaat van: profoX
GMP is wat je zoekt. http://gmplib.org/
Zeg even wat je precies wil, en ik help je op weg.
Ik heb GMP al vaak gebruikt voor hele grote integers :)
dit is inderdaad wat ik zocht. Met een mooie handleiding erbij! :-)

MERCI!
Support bacteria. They're the only culture some people have.