ESERCIZI PER CASA – PRIMA E SECONDA SETTIMANA Università degli Studi di Trento – Corso di Laurea in Matematica Corso di Teoria dei Numeri e Crittografia – A.A. 2008/09 25 febbraio 2009 Numeri scritti in basi diverse. Convertite (50664)7 (dalla base 7) in base 10. (Naturalmente potete aiutarvi con una semplice calcolatrice.) Convertite 13539 (o meglio, (13539)10 ) dalla base 10 alla base 7. Convertite il numero (1, 0201)3 in base 10, prima in forma esatta, cioè come frazione, e poi in un numero decimale periodico. Convertite il numero decimale (13, 15)10 in binario (cioè in base 2), e poi in esadecimale (cioè in base 16), con la precisione di almeno dieci bit dopo la virgola; oppure, ancor meglio, in forma periodica esatta (con parte intera, antiperiodo e periodo). Numeri periodici. (1) Giustificate con la teoria il periodo minimo (che in terminologia scolastica significa “la lunghezza del periodo”) dei numeri periodici ottenuti nell’esercizio precedente. (2) Sia a un intero non multiplo di 17; determinate il periodo minimo di a/17 nella sua espansione decimale, in quella binaria, ed in quella esadecimale. (3) Trovate tutti i primi p tali che l’espansione binaria di 1/p abbia 12 come periodo (non necessariamente minimo); trovate quindi i primi p tali che l’espansione binaria di 1/p abbia 12 come periodo minimo. (4) Trovate un intero n (non necessariamente primo!) tale che l’espansione decimale di 1/n abbia periodo minimo 147. (5) Per quali interi positivi n sono finite sia l’espansione decimale che l’espansione esadecimale di 1/n? Somme di cubi. Stimate il tempo necessario a calcolare ciascuno dei due membri dell’uguaglianza (facilmente dimostrabile per induzione su n) 2 n X n(n + 1) 3 i = . 2 i=1 Potenze. Usando la notazione O maiuscola, stimate in funzione di n il numero di operazioni bit necessarie a calcolare 3n (in binario). Date un’analoga stima per il calcolo di nn . Date una stima per il calcolo di mn , stavolta in funzione sia di m che di n. Moltiplicazioni e riduzioni modulo m. Siano dati tre interi non negativi a ≥ b ed m. Date delle stime temporali (dipendenti da a e m, nella notazione O maiuscola) per i seguenti due algoritmi: (1) moltiplicare a per b, e quindi ridurre il risultato modulo m; (2) ridurre a e b modulo m, poi moltiplicarli fra loro, ed infine (eventualmente) ridurre il risultato modulo m. Dopo aver semplificato le stime ottenute assumendo che a ≥ m (il caso interessante), dire quale algoritmo conviene usare (soprattutto per a molto piú grande di m) e perché. 1 2 ESERCIZI PER CASA – PRIMA E SECONDA SETTIMANA Sistemi di congruenze. Risolvete (cioè trovate tutte le soluzioni) della congruenza 25 x ≡ 49 (mod 97), e di ciascuno dei seguenti sistemi di congruenze: x ≡ 11 (mod 9) x ≡ 8 (mod 9) x ≡ 11 (mod 15) x ≡ 17 (mod 21) x ≡ 13 (mod 11) x ≡ 10 (mod 11) x ≡ 31 (mod 35) x ≡ 9 (mod 13) x ≡ 12 (mod 13) (notare che per l’ultimo sistema bisogna spezzare ciascuna congruenza in due rispetto a moduli coprimi, e si fa grazie al Teorema Cinese dei resti, dopodiché. . .). MCM. Calcolate il minimo comune multiplo degli interi da 1 a 10. Ora trovate il minimo comune multiplo degli interi da 1 a 100; di quest’ultimo basta che esibiate la scomposizione in fattori primi, non serve che ne troviate il valore numerico. Complessità del crivello di Eratostene. Ricordo brevemente come funziona. Serve per determinare tutti i primi fino ad un limite fissato n. Si parte con una tabella contenente i numeri naturali fino ad n. Poi se ne cancellano tutti i multipli di 2 (cioè i numeri pari), quindi quelli di 3, poi √ quelli di 5, e cosı́ via. Una volta cancellati tutti i multipli dei primi che non superano n (perché?), nella tabella rimangono solo 1 ed i numeri primi (che non superano n). (Notate che non è necessario avere a disposizione una tabella dei √ primi che non superano n, perché il crivello stesso la produce man mano.) Ci si può ragionevolmente aspettare che il crivello di Eratostene sia meno efficiente del metodo delle divisioni per tentativi se utilizzato per determinare se un numero assegnato è primo, ma che possa essere piú efficiente se si vogliono ottenere tutti i primi che non superano n. Dimostrate quest’ultima affermazione. Piú precisamente, dimostrate che il tempo per l’esecuzione del crivello di Eratostene cosı́ come descritto (trascurando questioni di memoria e, piú in generale, come amministrare una tabella cosı́ lunga), è O(n log2 n), mentre il tempo per ottenere una tabella tutti i primi che non superano n controllandoli uno ad uno mediante le divisioni per tentativi è O(n3/2 log n). Fattorizzazione nel caso di fattori fra loro vicini. Scomporre in fattori primi l’intero n = 133457, usando l’informazione che è un prodotto pq di due fattori (non necessariamente primi in generale, anche se lo sono in questo caso specifico) “non troppo diversi fra loro” (diciamo che vale 300 < q ≤ p < 450 in questo caso), con la seguente strategia: poiché p e q sono entrambi dispari, essi si possono scrivere come s − t e s + t rispettivamente, per certi interi s e t (s = p+q e t = p−q ); dunque bisogna riuscire a 2 2 √ 2 2 scrivere n come n = s − t , ed s dovrebbe essere di poco superiore a n = 365, 3 . . ., poiché √ p e q sono vicini (in effetti, con l’informazione che abbiamo, t < 75 e quindi s < n + 752 = 372, 9 . . .); quindi la strategia consiste nel calcolare successivi valori di s2 − n, cioè 3662 − n, 3672 − n, . . ., finché non otteniamo un quadrato perfetto t2 ; per quanto visto ce la caveremo con meno di una decina di prove. Nota: Questo esercizio dà una dimostrazione pratica di come gli interi che si fattorizzano in un prodotto di fattori (eventualmente anche non primi) “non troppo diversi fra loro” (il che in generale non si saprà a priori, naturalmente) siano relativamente facili da fattorizzare. Bisogna tener conto di questo nella scelta dei primi p e q del metodo RSA. Variante: fattorizzate 939149, sapendo che esso è il prodotto di due primi di cui uno è molto vicino al quintuplo dell’altro. Una volta che vi sieti portati nella situazione precedente, dovreste riuscirci al primo colpo.