Big numbers και computers

Λογισμικό, λειτουργικά συστήματα, προγραμματισμός, hardware, δίκτυα, Internet
Άβαταρ μέλους
wooded glade
Δημοσιεύσεις: 29284
Εγγραφή: 02 Απρ 2018, 17:04

Big numbers και computers

Μη αναγνωσμένη δημοσίευση από wooded glade » 23 Μάιος 2021, 08:08

The largest known prime number (as of December 2020) is 2^82,589,933 − 1, a number which has 24,862,048 digits when written in base 10. It was found via a computer volunteered by Patrick Laroche of the Great Internet Mersenne Prime Search (GIMPS) in 2018.
Πως τα υπολογίζουν αυτά ;
Κάποιοι ενδιάμεσοι μαθηματικοί τύποι υπάρχουν οπωσδήποτε, αλλά η vb με double precision -που δεν παρέχει ακρίβεια- φτάνει μέχρι αριθμούς με 309 ψηφία. Δεν πάει παραπάνω.

Εγώ θέλω να υπολογίσω με ακρίβεια ακεραίους που να φτάνουν μέχρι το 10^18. Πως γίνεται ;
δεν είναι όλα κρού-σμα-τα

Άβαταρ μέλους
klg
Δημοσιεύσεις: 3319
Εγγραφή: 15 Οκτ 2018, 12:14
Phorum.gr user: klg

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από klg » 23 Μάιος 2021, 13:07

Ενπηρειά και σθένος σου πήρε 6 σελίδες να κάνεις άρνηση απαιτούμενος. Είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα. Ακόμα και οι Ζαίοι δεν χρειάζονται τα δύο χρώματα σαν κυρίες.

Thank you Google Translate.

Άβαταρ μέλους
nick
Δημοσιεύσεις: 5148
Εγγραφή: 25 Μάιος 2018, 22:21

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από nick » 23 Μάιος 2021, 13:21

wooded glade έγραψε:
23 Μάιος 2021, 08:08
The largest known prime number (as of December 2020) is 2^82,589,933 − 1, a number which has 24,862,048 digits when written in base 10. It was found via a computer volunteered by Patrick Laroche of the Great Internet Mersenne Prime Search (GIMPS) in 2018.
Πως τα υπολογίζουν αυτά ;
Κάποιοι ενδιάμεσοι μαθηματικοί τύποι υπάρχουν οπωσδήποτε, αλλά η vb με double precision -που δεν παρέχει ακρίβεια- φτάνει μέχρι αριθμούς με 309 ψηφία. Δεν πάει παραπάνω.

Εγώ θέλω να υπολογίσω με ακρίβεια ακεραίους που να φτάνουν μέχρι το 10^18. Πως γίνεται ;
το primality test ειναι πολυ ευκολο
Given an integer n, choose some integer a coprime to n and calculate a^n − 1 modulo n. If the result is different from 1, then n is composite. If it is 1, then n may be prime.
https://en.wikipedia.org/wiki/Primality_test

δηλαδη αν 2^(n-1) mod n=1 τοτε πολυ πιθανο to n ειναι prime.
δοκιμαζεις και το 3^(n-1), 4^(n-1) ... να εισαι 99.999999... σίγουρος.
Αυτες οι πραξεις ειναι πολυ γρήγορες.
https://en.wikipedia.org/wiki/Modular_exponentiation

Σε πολλες γλωσσες υπαρχει η κλαση BigInteger που υποστηριζει αριθμους με εκατομμυρια ψηφια.

Άβαταρ μέλους
Awesomatic
Δημοσιεύσεις: 6511
Εγγραφή: 16 Μάιος 2018, 00:11
Phorum.gr user: Awesomatic

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από Awesomatic » 23 Μάιος 2021, 13:30

Short version: Από ένα σημείο και μετά έχεις περιορισμό και από το σύστημα εκτός από τη γλώσσα. Η VB6 (που αν θυμάμαι καλά χρησιμοποιείς) δεν μπορεί να το κάνει αυτό. Αν θέλεις πολύ μεγάλους αριθμούς μπορεί να γίνει σε 64bit σύστημα με python ή Java (το τελευταίο για όσους έχουν ανώμαλες τάσεις)
"Taxation is theft, purely and simply even though it is theft on a grand and colossal scale which no acknowledged criminals could hope to match. It is a compulsory seizure of the property of the State’s inhabitants, or subjects."

Άβαταρ μέλους
nick
Δημοσιεύσεις: 5148
Εγγραφή: 25 Μάιος 2018, 22:21

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από nick » 23 Μάιος 2021, 13:33

Awesomatic έγραψε:
23 Μάιος 2021, 13:30
Short version: Από ένα σημείο και μετά έχεις περιορισμό και από το σύστημα εκτός από τη γλώσσα. Η VB6 (που αν θυμάμαι καλά χρησιμοποιείς) δεν μπορεί να το κάνει αυτό. Αν θέλεις πολύ μεγάλους αριθμούς μπορεί να γίνει σε 64bit σύστημα με python ή Java (το τελευταίο για όσους έχουν ανώμαλες τάσεις)
μιλαμε για πολυ μεγαλυτερους αριθμους απο 2^32 ή 2^64.

https://docs.oracle.com/javase/7/docs/a ... teger.html
https://docs.microsoft.com/en-us/dotnet ... ew=net-5.0
https://levelup.gitconnected.com/how-py ... db71f77a2f

Άβαταρ μέλους
Navis
Δημοσιεύσεις: 558
Εγγραφή: 18 Απρ 2019, 13:31

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από Navis » 23 Μάιος 2021, 13:36

Δε νομιζω οτι εχει να κανει με 32 η' 64 μπιτη αρχιτεκτονικη. Για τοσο μεγαλους αριθμους θα χρησιμοποιουνε ειδικες βιβλιοθηκες που κανουν τις πραξεις τμηματικα και οχι σε μια εντολη της ALU. Σε αυτη την περιπτωση ο μεγαλος αριθμος ειναι ενα μεγαλο bitstream χωρις περιορισμους 64 μπιτ αλλα οσο βασταει η μνημη σου. Και κατι τετοιο μπορει να γινει και σε ενα 8-μπιτο μηχανημα.

πχ και πολυ χοντρικα, η προσθεση δυο αριθμων 128 + 64, αντι να ειναι ενα και ενα μπαιτς , ειναι 3 και 3 strings "128", "64" και η πραξη της προσθεσης γινεται οπως καναμε στο δημοτικο.

Άβαταρ μέλους
wooded glade
Δημοσιεύσεις: 29284
Εγγραφή: 02 Απρ 2018, 17:04

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από wooded glade » 23 Μάιος 2021, 14:20

Navis έγραψε:
23 Μάιος 2021, 13:36
Δε νομιζω οτι εχει να κανει με 32 η' 64 μπιτη αρχιτεκτονικη. Για τοσο μεγαλους αριθμους θα χρησιμοποιουνε ειδικες βιβλιοθηκες που κανουν τις πραξεις τμηματικα και οχι σε μια εντολη της ALU. Σε αυτη την περιπτωση ο μεγαλος αριθμος ειναι ενα μεγαλο bitstream χωρις περιορισμους 64 μπιτ αλλα οσο βασταει η μνημη σου. Και κατι τετοιο μπορει να γινει και σε ενα 8-μπιτο μηχανημα.

πχ και πολυ χοντρικα, η προσθεση δυο αριθμων 128 + 64, αντι να ειναι ενα και ενα μπαιτς , ειναι 3 και 3 strings "128", "64" και η πραξη της προσθεσης γινεται οπως καναμε στο δημοτικο.
Είπα έως 10^18.
Ας πούμε:

2234567890 x 345678901

Πως θα το κάνω ;
Σαν long integer βγάζει overflow. Σαν single precision ή και σαν double precision χάνεται η ακρίβεια.
Λες με εντολές όπως θα το κάναμε με το χέρι, προ slide rule και προ κομπιουτερακίων και να σχηματίζεται σιγά-σιγά το γινόμενο σαν string. Αυτό λες ;
δεν είναι όλα κρού-σμα-τα

Άβαταρ μέλους
Navis
Δημοσιεύσεις: 558
Εγγραφή: 18 Απρ 2019, 13:31

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από Navis » 23 Μάιος 2021, 14:38

ε ναι. Θα ειναι πιο αργο αλλα ισως οχι πολυ

Άβαταρ μέλους
klg
Δημοσιεύσεις: 3319
Εγγραφή: 15 Οκτ 2018, 12:14
Phorum.gr user: klg

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από klg » 23 Μάιος 2021, 19:01

Και για να απαντήσω στο ερωτημά σου τώρα που έχω χρόνο, οι υπολογισμοί για τέτοιους αριθμούς γενικά πραγματοποιούνται με vector SSE. Οι πολλαπλασιασμοί, αναλογώς το μέγεθος του product, υλοποιούνται με διάφορους αλγόριθμους (karatsuba, FFT, NTT) και γενικά το πρόβλημα σου είναι ότι από ένα σημειο και μετά οι αριθμοί προφανώς δεν χωράνε ούτε στην ram, οπότε για τεράστιους πολλαπλασιασμούς χρησιμοποιείς το δίσκο και εκτελείς FFT ή κάποιο efficient NTT.

Με λίγα λόγια τα bottlenecks είναι 1) για μικρούς υπολογισμούς το throughput του SSE FPU και 2) για μεγάλους υπολογισμούς το bandwidth της ram και του δίσκου.

Πάντως γενικά υπάρχουν διάφορες βιβλιοθήκες που σου παρέχουν big number υλοποιήσεις με κλασσικό παράδειγμα (που μπορείς να δεις και εσύ) την GMP.
Ενπηρειά και σθένος σου πήρε 6 σελίδες να κάνεις άρνηση απαιτούμενος. Είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα. Ακόμα και οι Ζαίοι δεν χρειάζονται τα δύο χρώματα σαν κυρίες.

Thank you Google Translate.

Άβαταρ μέλους
NoMoreLice
Δημοσιεύσεις: 928
Εγγραφή: 02 Απρ 2018, 02:14

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από NoMoreLice » 23 Μάιος 2021, 21:49

klg έγραψε:
23 Μάιος 2021, 19:01
το πρόβλημα σου είναι ότι από ένα σημειο και μετά οι αριθμοί προφανώς δεν χωράνε ούτε στην ram
Υπάρχει κάποιος στον κόσμο που χρησιμοποιεί αριθμούς που δεν χωράνε στη ram; Και 100 GB να διαθέσεις για έναν αριθμό (δεν είναι τίποτα ας πούμε να έχεις έναν σέρβερ με 256 ή 512 gb μνήμη), μιλάμε μπορείς να υπολογίσεις αριθμούς έως 2^(80^11). Εξωπραγματικό. Δεν νομίζω ότι υπάρχει κανείς στον κόσμο που να αναγκάζεται να χρησιμοποιεί disk I/O για αριθμητικές πράξεις.
Να δώσει η Μεγαλόχαρη κι η Παναγιά η Κανάλα
να μεγαλώσω γρήγορα σαν τα κορίτσια τ' άλλα

:scross:

Άβαταρ μέλους
klg
Δημοσιεύσεις: 3319
Εγγραφή: 15 Οκτ 2018, 12:14
Phorum.gr user: klg

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από klg » 24 Μάιος 2021, 11:34

NoMoreLice έγραψε:
23 Μάιος 2021, 21:49
klg έγραψε:
23 Μάιος 2021, 19:01
το πρόβλημα σου είναι ότι από ένα σημειο και μετά οι αριθμοί προφανώς δεν χωράνε ούτε στην ram
Υπάρχει κάποιος στον κόσμο που χρησιμοποιεί αριθμούς που δεν χωράνε στη ram; Και 100 GB να διαθέσεις για έναν αριθμό (δεν είναι τίποτα ας πούμε να έχεις έναν σέρβερ με 256 ή 512 gb μνήμη), μιλάμε μπορείς να υπολογίσεις αριθμούς έως 2^(80^11). Εξωπραγματικό. Δεν νομίζω ότι υπάρχει κανείς στον κόσμο που να αναγκάζεται να χρησιμοποιεί disk I/O για αριθμητικές πράξεις.
Φυσικά και υπάρχει. Έτσι υπολογίζεις τα ψηφία του π για παράδειγμα.

http://www.numberworld.org/misc_runs/pi-12t/

Πρέπει να έχεις στο μυαλό σου ότι εδώ συζητάμε για τρισεκατομμύρια ψηφία του π.
Ενπηρειά και σθένος σου πήρε 6 σελίδες να κάνεις άρνηση απαιτούμενος. Είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα. Ακόμα και οι Ζαίοι δεν χρειάζονται τα δύο χρώματα σαν κυρίες.

Thank you Google Translate.

axilmar
Δημοσιεύσεις: 8420
Εγγραφή: 08 Απρ 2019, 11:48
Phorum.gr user: axilmar

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από axilmar » 24 Μάιος 2021, 12:18

wooded glade έγραψε:
23 Μάιος 2021, 08:08
The largest known prime number (as of December 2020) is 2^82,589,933 − 1, a number which has 24,862,048 digits when written in base 10. It was found via a computer volunteered by Patrick Laroche of the Great Internet Mersenne Prime Search (GIMPS) in 2018.
Πως τα υπολογίζουν αυτά ;
Κάποιοι ενδιάμεσοι μαθηματικοί τύποι υπάρχουν οπωσδήποτε, αλλά η vb με double precision -που δεν παρέχει ακρίβεια- φτάνει μέχρι αριθμούς με 309 ψηφία. Δεν πάει παραπάνω.

Εγώ θέλω να υπολογίσω με ακρίβεια ακεραίους που να φτάνουν μέχρι το 10^18. Πως γίνεται ;
Χρησιμοποιουν custom made types, και οι αριθμητικες πραξεις γινονται με κωδικα, οχι με εντολες προς την CPU.

Πολλες γλωσσες προγραμματισμου παρεχουν ειδικες κλασεις ακεραιων για μεγαλους αριθμους που ξεφευγουν της 32-μπιτ και 64-μπιτ αρχιτεκτονικης.

Άβαταρ μέλους
NoMoreLice
Δημοσιεύσεις: 928
Εγγραφή: 02 Απρ 2018, 02:14

Re: Big numbers και computers

Μη αναγνωσμένη δημοσίευση από NoMoreLice » 24 Μάιος 2021, 19:17

klg έγραψε:
24 Μάιος 2021, 11:34
NoMoreLice έγραψε:
23 Μάιος 2021, 21:49
klg έγραψε:
23 Μάιος 2021, 19:01
το πρόβλημα σου είναι ότι από ένα σημειο και μετά οι αριθμοί προφανώς δεν χωράνε ούτε στην ram
Υπάρχει κάποιος στον κόσμο που χρησιμοποιεί αριθμούς που δεν χωράνε στη ram; Και 100 GB να διαθέσεις για έναν αριθμό (δεν είναι τίποτα ας πούμε να έχεις έναν σέρβερ με 256 ή 512 gb μνήμη), μιλάμε μπορείς να υπολογίσεις αριθμούς έως 2^(80^11). Εξωπραγματικό. Δεν νομίζω ότι υπάρχει κανείς στον κόσμο που να αναγκάζεται να χρησιμοποιεί disk I/O για αριθμητικές πράξεις.
Φυσικά και υπάρχει. Έτσι υπολογίζεις τα ψηφία του π για παράδειγμα.

http://www.numberworld.org/misc_runs/pi-12t/

Πρέπει να έχεις στο μυαλό σου ότι εδώ συζητάμε για τρισεκατομμύρια ψηφία του π.
Ενδιαφέρον, θα το κοιτάξω. thanks.
Να δώσει η Μεγαλόχαρη κι η Παναγιά η Κανάλα
να μεγαλώσω γρήγορα σαν τα κορίτσια τ' άλλα

:scross:

Απάντηση


  • Παραπλήσια Θέματα
    Απαντήσεις
    Προβολές
    Τελευταία δημοσίευση

Επιστροφή στο “Πληροφορική”

Phorum.com.gr : Αποποίηση Ευθυνών