Λογισμικό, λειτουργικά συστήματα, προγραμματισμός, hardware, δίκτυα, Internet
-
wooded glade
- Δημοσιεύσεις: 29284
- Εγγραφή: 02 Απρ 2018, 17:04
Μη αναγνωσμένη δημοσίευση
από 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
- Δημοσιεύσεις: 3485
- Εγγραφή: 15 Οκτ 2018, 12:14
- Phorum.gr user: klg
Μη αναγνωσμένη δημοσίευση
από klg » 23 Μάιος 2021, 13:07
Ενπηρειά και σθένος σου πήρε 6 σελίδες να κάνεις άρνηση απαιτούμενος. Είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα, είμαι νεαρή γυναίκα. Ακόμα και οι Ζαίοι δεν χρειάζονται τα δύο χρώματα σαν κυρίες.
Thank you Google Translate.
-
nick
- Δημοσιεύσεις: 6290
- Εγγραφή: 25 Μάιος 2018, 22:21
Μη αναγνωσμένη δημοσίευση
από 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
- Δημοσιεύσεις: 6553
- Εγγραφή: 16 Μάιος 2018, 00:11
- Phorum.gr user: Awesomatic
Μη αναγνωσμένη δημοσίευση
από 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."
-
Navis
- Δημοσιεύσεις: 599
- Εγγραφή: 18 Απρ 2019, 13:31
Μη αναγνωσμένη δημοσίευση
από 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
Μη αναγνωσμένη δημοσίευση
από 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. Αυτό λες ;
δεν είναι όλα κρού-σμα-τα
-
klg
- Δημοσιεύσεις: 3485
- Εγγραφή: 15 Οκτ 2018, 12:14
- Phorum.gr user: klg
Μη αναγνωσμένη δημοσίευση
από 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
- Δημοσιεύσεις: 1036
- Εγγραφή: 02 Απρ 2018, 02:14
Μη αναγνωσμένη δημοσίευση
από NoMoreLice » 23 Μάιος 2021, 21:49
klg έγραψε: ↑23 Μάιος 2021, 19:01
το πρόβλημα σου είναι ότι από ένα σημειο και μετά οι αριθμοί προφανώς δεν χωράνε ούτε στην ram
Υπάρχει κάποιος στον κόσμο που χρησιμοποιεί αριθμούς που δεν χωράνε στη ram; Και 100 GB να διαθέσεις για έναν αριθμό (δεν είναι τίποτα ας πούμε να έχεις έναν σέρβερ με 256 ή 512 gb μνήμη), μιλάμε μπορείς να υπολογίσεις αριθμούς έως 2^(80^11). Εξωπραγματικό. Δεν νομίζω ότι υπάρχει κανείς στον κόσμο που να αναγκάζεται να χρησιμοποιεί disk I/O για αριθμητικές πράξεις.
Να δώσει η Μεγαλόχαρη κι η Παναγιά η Κανάλα
να μεγαλώσω γρήγορα σαν τα κορίτσια τ' άλλα 
-
klg
- Δημοσιεύσεις: 3485
- Εγγραφή: 15 Οκτ 2018, 12:14
- Phorum.gr user: klg
Μη αναγνωσμένη δημοσίευση
από 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
- Δημοσιεύσεις: 9225
- Εγγραφή: 08 Απρ 2019, 11:48
- Phorum.gr user: axilmar
Μη αναγνωσμένη δημοσίευση
από 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
- Δημοσιεύσεις: 1036
- Εγγραφή: 02 Απρ 2018, 02:14
Μη αναγνωσμένη δημοσίευση
από 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.
Να δώσει η Μεγαλόχαρη κι η Παναγιά η Κανάλα
να μεγαλώσω γρήγορα σαν τα κορίτσια τ' άλλα 
Phorum.com.gr : Αποποίηση Ευθυνών
Αποποίηση Ευθυνών Διαχείρισης Φόρουμ (Phorum.com.gr)
Οι απόψεις και τα σχόλια που δημοσιεύονται σε αυτό το Φόρουμ είναι προσωπικά και δεν αντιπροσωπεύουν αυτές της Διαχείρισης του Phorum.com.gr
Το κάθε μέλος, σύμφωνα με τους όρους χρήσης που αποδέχτηκε κατά την εγγραφή του, φέρει την αποκλειστική ευθύνη των δημοσιεύσεών του, των απόψεων / θέσεων που εκφράζονται
μέσω αυτής, καθώς και την επιλογή συνδέσμων που τυχόν συμπεριλαμβάνονται.
Η Διαχείριση του Phorum.com.gr σε καμία περίπτωση δεν αποδέχεται οποιαδήποτε ευθύνη, για οποιαδήποτε συμβουλή ή συστάσεις που κάνει ή υπονοεί κάποιο μέλος ή επισκέπτης του Phorum.com.gr
η οποία έχει ως αποτέλεσμα οποιαδήποτε απώλεια / ζημία, με οποιονδήποτε τρόπο, για μέλος του Phorum.com.gr, ή για οποιοδήποτε άλλο πρόσωπο.
Επιπλέον, η Διαχείριση του Phorum.com.gr δεν είναι και δεν μπορεί να είναι υπεύθυνη, για το περιεχόμενο οποιουδήποτε άλλου ιστοτόπου στο Διαδίκτυο,
που έχει συνδεθεί με σύνδεσμο (link) από το Phorum.com.gr
Για άμεση επικοινωνία με τη Διαχείριση του Phorum.com.gr μπορείτε να συμπληρώνετε τη φόρμα της σελίδας Επικοινωνίας του Phorum.com.gr παρακάτω.