Προς το περιεχόμενο

Pws mporw na dhlwsw enan megalo arithmo se C ?


tsialiam

Προτεινόμενες αναρτήσεις

Δημοσ.

Εφοσον θέλεις και τα 200 (πχ) ψηφία ΣΗΜΑΝΤΙΚΑ (δηλαδή να εκτελούνται ακριβείς πράξεις) νομίζω ότι είσαι ΥΠΟΧΡΕΩΜΕΝΟΣ να καταφύγεις σε βιβλιοθήκη συναρτήσεων με αποθήκευση μεγάλων ακεραίων σε πίνακες ψηφίων. Παλαιότερα (πάνε 10 χρόνια) είχα φτιάξει μια τέτοια βιβλιοθήκη με πίνακα χαρακτήρων σε 256-δική βάση αλλά είχα υλοποιήσει ως πράξεις μόνο πρόσθεση και πολ/μο.

 

ΣΙΓΟΥΡΑ υπάρχουν βιβλιοθήκες στο δίκτυο με τέτοια και καλύτερα στοιχεία αλλά για να διαλέξεις την καλύτερη ΘΑ ΠΡΕΠΕΙ να ξέρεις τι θέλεις να κάνεις:

 

1. Τι πράξεις θα εκτελείς με αυτούς τους αριθμούς;

 

2. Από που έρχονται και προς τα που θέλεις να πάνε; (Εισοδος, Εξοδος, ενδιάμεσα αποτελέσματα, αρχεία)

 

3. Ποιές θα είναι οι μελοντικές απαιτήσεις σου αν θεωρήσεις ότι έχεις τώρα μια λύση;

 

Ελπίζω να βοήθησα μέσω του προβληματισμού...

Δημοσ.

Σίγουρα υπάρχει βιβλιοθήκη στη C για πολύ μεγάλους αριθμούς, γιατί πρίν μερικά

χρόνια ένας καθηγητής είχε βάλει μία εργασία για να φτιάξουν τα παιδιά το

interface αυτής της βιβλιοθήκης. (νομίζω GNU)

 

edit: Πάντως η διαχείρηση των αριθμών γινόταν μέσω string όπως λέει και ό chiossif

Και πιθανών να ήταν οι συναρτήσεις αυτές...

Δημοσ.

Αν θέλεις να κάνεις κάτι τέτοιο πρέπει να έχεις υπόψην σου τα εξής:

 

Κοίταξε αν μπορείς πρώτα να χρησιμοποιήσεις κάτι έτοιμο αν επιτρέπεται. Ειδάλλως, αποφάσισε τι θέλεις να υποστηρίξεις.

1. η πρόσθεση και η αφαίρεση είναι σχετικά εύκολα: μπορείς εύκολα να βρεις πότε γίνεται overflow/underflow και να κάνεις αντίστοιχα την υλοποίησή σου.

2. ο πολλαπλασιασμός απαιτεί κάποιους πιο έξυπνους αλγορίθμους

 

Tέλος, διάβασε το εξής:

http://numbers.computation.free.fr/Constants/Algorithms/representation.html

 

Βιβλιοθήκες:

http://www.swox.com/gmp/

http://shoup.net/ntl/

http://www.oonumerics.org/

http://sourceforge.net/projects/muntl/

http://www.kepreon.com/~matt/bigint/index.html

https://sourceforge.net/projects/cpp-bigint/

 

Σημ: πολλά είναι σε C++, αλλά με ελάχιστο κόπο μπορείς να τα μεταφέρεις στην C.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...