Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Professor Bertoni
Francesco Rinarelli
Matteo Verzillo
1
TEST DI PRIMALITA’ E GENERATORI DI NUMERI PRIMI
INTRODUZIONE
L’ALGORITMO
INTRODUZIONE
L’ALGORITMO - LE FASI
• Viene scelta una base casuale a per la verifica della congruenza indicata
dal piccolo teorema di Fermat.
• Il valore p-1, dove p è l’intero dispari da testare, viene scomposto nella
forma 2tu, dove t è il numero di zeri iniziali nella rappresentazione binaria di
p, e u, ovviamente, intero e dispari.
• a viene elevato per u, successivamente viene iterato un elevamento al
quadrato (t volte).
• Ad ogni iterazione, viene verificato che:
• Se ai = au*2^i = 1 mod p, ai-1 = 1,-1 mod p
• at = ap-1 = 1 mod p
• In caso contrario, RM termina restituendo composite.
• Al termine, l’algoritmo restituisce probably prime.
OSSERVAZIONI
Ideato agli inizi degli anni ’80 da Pomerance, è uno dei principali algoritmi di
fattorizzazione per numeri interi.
L’algoritmo è utilizzato indirettamente come test di (non)primalità, in quanto
fornisce in tempo subesponenziale un certificato di compostezza per i numeri
in ingresso.
È stato utilizzato con successo per rompere il cifrario RSA a 128 bit.
L’ALGORITMO
L’ALGORITMO
L’ALGORITMO
UN ESEMPIO SEMPLIFICATO
Consideriamo n = 15770708441.
Sia B = {2, 3, 5, 7, 11, 13} la factor base.
INTRODUZIONE
• I test classici sono test che utilizzano teoremi noti della teoria dei numeri,
per applicarli a classi di numeri particolari, in modo da ottenere alte
prestazioni computazionali. Non sono test general purpose, perché in
generale la loro complessità può essere abbondantemente superpolinomiale.
• Il più grande numero primo conosciuto, con quasi 8 milioni di cifre, è stato
trovato da uno di questi algoritmi. È infatti un numero di una categoria
particolare, i primi di Mersenne (primi della forma 2i -1)
• Il nome di questi test deriva dal fatto che per alcune classi di numeri (come
quella di Mersenne) l’intero immediatamente precedente o successivo è
fattorizzabile in tempo sublineare.
I TEST N-1
I TEST N-1
I TEST N+1
I TEST N+1
I TEST N+1
IL NUCLEO DELL’ALGORITMO
L’ALGORITMO
L’ALGORITMO
L’ALGORITMO
L’ALGORITMO - LE FASI
• Sia p l’intero dispari da testare. Si verifica innanzitutto che p non sia una
potenza di un qualche numero primo.
• Si determina il più piccolo numero primo r che non divida né p né alcuno
dei numeri pi-1, per ogni i < log2p/log22. Se viene trovato un r divisore di p
ovviamente l’algoritmo termina.
• Per ogni intero a < r-1 si verifica che valga (x + a)p = xp + a nell’anello
Z[x]/p. Se ciò non accade l’algoritmo termina.
• Se l’algoritmo non è terminato precedentemente, p è primo.
OSSERVAZIONI