Υπολογισμός της δύναμης z=x b modn 1.Γράφουμε τον εκθέτη b στο δυαδικό σύστημα αρίθμησης i b = b i όπου i= 0 bi {0,1} I==0,1,,l-1.Εφαρμόζουμε έπειτα τον εξής αλγόριθμο: z=1 for I=l-1 downto 0 do z=z modn if b i =1 then z=zx (modn) παράδειγμα Δίνονται x=5, b=65, n=103 1.Το b στο δυαδικό σύστημα γράφεται b= 6 + 0 = 64+1. Η εφαρμογή του αλγορίθμου φαίνεται στον πίνακα: i b i Z 6 1 1 *5=5 5 0 5 =5 4 0 5 =65=7(mod103) 3 0 7 =49 0 49 =3 (mod 103) 1 0 3 =97 (mod 103) 0 1 97 *5=77 (mod 103) Παράδειγμα Δίνονται x=37, b=117, n=34. Θέλουμε να υπολογιστεί το z=x b modn= 37 117 mod34 1.Το b στο δυαδικό σύστημα γράφεται b= 6 + 5 + 4 + + 0. Η εφαρμογή του αλγορίθμου φαίνεται στον πίνακα: i b i Z 6 1 1 *37=37 5 1 37 *37=109 (mod 34) 4 1 109 *37=53(mod 34) 3 0 53 =181 (mod 34) 1 181 *37 =73 (mod 34) 1 0 73 =145 (mod 34) 0 1 145 *37=1 (mod 34) Άσκηση 976 3533 mod( 11413). Κρυπτογράφηση του μηνύματος «ΕΠΙΘΕΣΗ ΣΤΙΣ ΟΚΤΩ» l 1
Tests Παραγοντοποίησης Πρόταση: Άν δεν υπάρχει πρώτος p < n που να διαιρεί το n τότε ο n είναι πρώτος. Ισοδύναμα: Αν ο n σύνθετος τότε έχει διαιρέτη διάφορο της μονάδας και μικρότερο από το n Απόδειξη: n σύνθετος n=ab (a>1, b>1) Αν a,b μεγαλύτεροι από n τότε ΑΤΟΠΟ a > n και b > n δηλαδή ab > n Ορισμός: Ένας Monte Carlo πιθανοθεωρητικός αλγόριθμος είναι ένας αλγόριθμος στον οποίο η απάντηση yes είναι πάντα σωστή ενώ η απάντηση no μπορεί να είναι και λάθος. Λέμε ότι ο αλγόριθμος έχει πιθανότητα λάθους e όταν δίνει τη λάθος απάντηση no με πιθανότητα το πολύ e. Τετραγωνικό Υπόλοιπο: p P, p, x Z, 1 x p-1 Ο x λέγεται τετραγωνικό υπόλοιπο mod p όταν η ισοδυναμία y b =x modp με y Z p έχει λύση. Παράδειγμα1 P=17, x=5 τότε η y =5 mod17 έχει λύση? Δηλαδή υπάρχει κλάση y mod17 τέτοια ώστε y =5 mod17? Παίρνω όλα τα y=0,1,,3,4,5,6,7,8,9,10,11,1,13,14,15,16,17 και τα υψώνω στο τετράγωνο. Έπειτα για mod17 βλέπω ποιο θα μου δώσει 5. Είναι y = 0,1,4,9,16,8,,-,-4, Τελικά το 5 δεν βρέθηκε άρα η ισοδυναμία δεν έχει λύση. Παράδειγμα P=5 και y = mod5. Να βρεθεί αν η ισοδυναμία έχει λύση. y 0 1 3 4 y 0 1 4 4(mod5) 1(mod5) Η ισοδυναμία δεν έχει λύση, δηλαδή το δεν είναι τετραγωνικό υπόλοιπο mod5. ος τρόπος (Κριτήριο του Euler) p 1 x τετραγωνικό υπόλοιπο modp x = 1(mod p) 5 1 Για p=5, x= έχω x = 1(mod5)
Σύμβολο Legendre α Ν, 0, αν a 0(mod p) a = 1, αν α τετραγωνικό υπόλοιπο mod p p 1, αν α όχι τετραγωνικό υπόλοιπο mod p Ισχύει αν p P, p, α Ν τότε a p a p 1 mod p Αν n=p a1 1 p a p as s, n 1() και α Ν τότε το σύμβολο του Jacobi ορίζεται a s i a a πολλαπλασιαστικά: : = n i = 1 p i Συμπέρασμα: Αν n Ν, n>1, n περιττός τότε n 1 a 1) Αν n = πρώτος a mod n για κάθε α n n 1 a ) Αν n =σύνθετος για κάποιο α μπορεί να ισχύει a mod n n Π.χ. για α=10 και n=91 ισχύει αν και ο n δεν είναι πρώτος. ή όχι. Ορισμός: Τέτοια n λέγονται ψευδοπρώτοι (του Euler) ως προς τη βάση α. Ισχύει: Για κάθε περριττό σύνθετο n, ο n είναι ψευδοπρώτος για το πολύ τους μισούς από τους ακεραίους α, 1 α n-1. Με βάση τα παραπάνω διατυπώνουμε το ακόλουθο Test των Solovay-Strassen n Ν, n περιττός 1. Εκλέγουμε τυχαία έναν ακέραιο α, 1 α n-1 n 1 a. Αν a mod n τότε : απάντηση= «Ο n είναι πτρώτος» n Αλλιώς: απάντηση= «Ο n είναι σύνθετος» Συμπέρασμα: Το test των Solovay-Strassen είναι ένας Monte Carlo αλγόριθμος με πιθανότητα λάθους το πολύ ½. Αν δώσει απάντηση «ο n είναι σύνθετος» είναι σωστή, αλλιώς μπορεί να είναι σωστή ή λάθος.
a n m1 m 1. Αν n περιττός ακέραιος και m 1 m (modn) = n n Κανόνες Υπολογισμού συμβόλου του Jacobi. Aν n περιττός ακέραιος τότε: 1, αν n ± 1(mod8) = n 1, αν n ± 3(mod8) m1 m m1 m 3. n=1() = * n n n Ιδιαίτερα αν m= k m t, t περιττός = n n k t * n 4. Αν m,n περιττοί ακέραιοι n, m m = n n, m αν m n 3(mod 4) σε όλες τις άλλες περιπτώσεις ΠΑΡΑΔΕΙΓΜΑ1: 7411 Ο αριθμητής είναι μικρότερος από τον παρονομαστή άρα δεν 983 χρησιμοποιώ την ιδιότητα (1). Ο αριθμητής δεν έχει άρα δεν χρησιμοποιώ ούτε την ιδιότητα (). Από την ιδιότητα (4): 7411 3(mod 4) 983 3(mod 4) Οπότε: 7411 983 = λόγω της (4) 983 7411 187 = λόγω της (1) 7411 117 = 7411 7411 117 = 7411 7411 = 117 40 = 117 5 = 117 117 3 4 λόγω της (3) λόγω της () λόγω της (4) λόγω της (1) λόγω της (3)
5 = 117 λόγω της () 117 = 5 λόγω της (4) = 5 λόγω της (1) = -1 λόγω της () ΠΑΡΑΔΕΙΓΜΑ: Θα αποδείξουμε ότι 10 91 1 10 mod91, δηλαδή ότι ο σύνθετος n=91=7*13 91 είναι ψευδοπρώτος ως προς τη βάση 10. 10 5 Καταρχήν υπολογίζουμε το σύμβολο του Jacobi = * 91 91 91 91 3(mod 8) = 1 91 10 5 91 Επομένως = = λόγω της (4) 91 91 5 1 = = 1 5 Αρκεί να δείξουμε ότι 10 45-1(mod 91). Είναι 10 3 1000-1 mod 91 οπότε 10 45 =( 10 3 ) 15 (-1) 15 (mod 91) (-1)(mod 91). Δηλαδή αποδείξαμε ότι 10 10 45 mod 91 91 Άλλα Tests Ελέγχου Πρώτων Αριθμών Test ελέγχου πρώτων αριθμών δοκιμής και επιτυχίας Έστω n περιττός ακέραιος. Παίρνουμε έναν περιττό ακέραιο m και ελέγχουμε αν m/n. Αν m 1,n και m/n τότε ο n είναι σύνθετος. Αν m 1,n αλλά όχι m/n τότε παίρνουμε άλλον m. Αφήνουμε το m να διατρέξει τους περιττούς ακεραίους από 3 μέχρι και n. Αν πάντα ο m δεν διαιρεί τον n τότε ο n είναι πρώτος. Το test αυτό είναι ιδιαίτερα χρονοβόρο, αλλά πρακτικό για μικρά n.
Παραγοντοποίηση Fermat Η μέθοδος είναι αποτελεσματική όταν ο n είναι γινόμενο δύο ακεραίων που ο ένας είναι κοντά στον άλλο. Τότε ο n είναι ίσος με την διαφορά δύο τετραγώνων ένας από τους οποίους είναι πολύ μικρός. Πρόταση: Αν n θετικός περιττός ακέραιος μία 1-προς-1 αντιστοιχία ανάμεσα στις παραγοντοποιήσεις του n=ab, a b>0 και τις παραστάσεις του n της μορφής n=t -s, t,s N. H αντιστοιχία δίνεται από τις σχέσεις : a + b a b t =, s =, α=t+s, b=t-s a + b a b a + b a b Απόδειξη: Αν n=ab, γραφουμε : n=ab = οπότε t =, s = Αντίστροφα: Αν n=t -s παραγοντοποιούμε n=(t+s)(t-s). Η αντιστοιχία είναι 1-1. Αν a b τώρα n=ab κοντά τα a,b τότε ο s = είναι μικρός και ο t λίγο μεγαλύτερος του n Αλγόριθμος: Δοκιμάζουμε διαδοχικές τιμές του t, ξεκινώντας από t=[ n ]+1 μέχρι να βρούμε t - n= s τέλειο τετράγωνο. Παράδειγμα Έστω n=00819 τότε [ 00819 ]+1=449 449-00819=78 Παίρνουμε t=450 οπότε 450-00819=1681=41 00819= 450-41 = (450+41) (45041) = 491*409 Αν τα a,b όχι αρκετά κοντά τότε θα μπορούσαμε ίσως να παραγοντοποιήσουμε το n, αφού όμως προσπαθήσουμε αρκετές φορές: t= [ n ]+1, [ n ]+, Υπάρχει γενίκευση του αλγορίθμου που δουλεύει καλύτερα: Επιλέγουμε μικρό k και θέτουμε διαδοχικά t=[ kn ]+1, [ kn ]+,... μέχρι να βρούμε t -kn =s =. Τότε (t+s)(t-s)=kn. Αυτό σημαίνει ότι t+s και n έχουν κάποιο μη-τετριμμένο παράγοντα, τον οποίο υπολογίζουμε από Μ.Κ.Δ (t+s,n). Παράδειγμα: n=141467. Αν χρησιμοποιούσαμε τον παράγοντα Fermat θα θέταμε διαδοχικές τιμές t=377,378, Αν όμως θέσουμε t=[ 3 n ]+1=65, τότε 655-3*141467=68 οπότε ΜΚΔ(655+68,141467)=41 141467=41*587 Ο λόγος για τον οποίο η μέθοδος δουλεύει για k=3 είναι ότι το b 3α. Για k=3, κάνουμε μόνο 4 δοκιμές για τα t, ενώ αν βάζαμε k=1 θα χρειαζόταν 31 δοκιμές!!
Αν n N, n>1, n περιττός και n<10 1 ελέγχουμε αν n πρώτος δοκίμαζοντας όλους τους περιττούς ακεραίους μέχρι [ n ] αν διαιρούν το n. Για μεγάλους φυσικούς υπάρχουν πολλά tests. Θα αναφερθούμε στο (p-1). Pollard s (p-1) -μέθοδος Αν p κάποιος, προς το παρόν, άγνωστος πρώτος διαιρέτης του n και συμβεί ο p-1 να μην έχει μεγάλους πρώτους παράγοντες τότε: 1. Διαλέγουμε έναν ακέραιο k, ο οπίος είναι πολλαπλάσιο (σχεδόν) όλων των ακεραίων μικρότερων κάποιου φράγματος Β. (Το k=b! ή Ε.Κ.Π όλων των ακεραίων Β). Διαλέγουμε ακέραιο α, α n- (π.χ. α=) 3. Υπολογίζουμε για j= μέχρι Β (ή k) το α=α j modn. 4. Υπολογίζουμε d=μ.κ.δ.(α-1, n) 5. Αν 1<d<n τότε d/n (επιτυχία) αλλιώς δεν βρήκαμε διαιρέτη του n (αποτυχία). Σε περίπτωση αποτυχίας αλλάζουμε το α ή και το k και επαναλαμβάνουμε τη διαδικασία. Παράδειγμα: n=540143. Ας πάρουμε Β=8. k=ε.κ.π{1,,3,4,5,6,7,8}=840. Υπολογίζουμε το 840 mod540143=53047 και στη συνέχεια το Μ.Κ.Δ(540143,53047) =41. Επομένως, 540143=41*183. Test ελέγχου πρώτων αριθμών των Miller-Rabin 1. n περιττός ακέραιος και n-1 = k m.. Διαλέγουμε τυχαίαακέραιο α, 1 α n-1. 3. Yπολογίζουμε το b=a m modn. 4. Αν b=1modn τότε η απάντηση είναι «ο n είναι πρώτος» και quit. 5. για i=0 μέχρι k-1 κάνε 6. αν b= -1 modn τότε η απάντηση είναι «ο n είναι πρώτος» και quit. 7. αλλιώς b=b modn και η απάντηση είναι «ο n σύνθετος»