Test di Primalità
Un Test di Primalità è un procedimento o algoritmo che consente di determinare se un numero intero passato come input è un numero primo o no.
Esistono diversi metodi per verificare se un numero è primo. In questa lezione, vedremo come funziona il test di primalità per divisioni ripetute e alcune ottimizzazioni per velocizzarlo.
Test di Primalità
Come si evince dalla definizione, un numero primo è divisibile solo per 1 e per se stesso. Ciò significa che esso non sarà divisibile per tutti gli altri numeri compresi tra 1 e se stesso.
Verificare se un numero naturale è primo è un problema molto importante in matematica e in informatica. Questo problema è noto come Test di Primalità.
Esistono diversi metodi per verificare se un numero è primo oppure no. Alcuni di essi sfruttano le proprietà dei numeri primi, altri sono basati su algoritmi più complessi. Questo è un argomento molto vasto e complesso che viene affrontato in Teoria dei Numeri.
In questa lezione, ci concentreremo sul metodo più semplice per verificare se un numero è primo: il test di primalità per divisioni ripetute.
In pratica, dato un numero
Prendiamo un primo esempio. Verifichiamo se il numero
Per farlo, dobbiamo dividere
non è divisibile per ; non è divisibile per ; non è divisibile per ; non è divisibile per ; non è divisibile per ; - ...
non è divisibile per ;
Poiché nessuno di questi numeri è divisore di
Prendiamo un secondo esempio. Verifichiamo se il numero
Per farlo, dobbiamo dividere
non è divisibile per ; non è divisibile per ; non è divisibile per ; non è divisibile per ; non è divisibile per ; è divisibile per ;
Poiché
Così come descritto il test è abbastanza tedioso ma si possono applicare alcune ottimizzazioni.
Ottimizzazioni
In primo luogo, possiamo arrestare il procedimento di verifica al numero
Il motivo per cui si considerano solo i numeri fino a
Una seconda ottimizzazione con cui possiamo velocizzare il procedimento di verifica di primalità è quella di dividere il numero solo per i numeri primi compresi tra
La ragione è molto semplice. Intuitivamente, ritornando all'esempio di
Applicando queste due ottimizzazioni, il procedimento diventa molto più veloce. Ad esempio, supponiamo di voler verificare se
In questo caso, dobbiamo dividere
non è divisibile per ; non è divisibile per ; non è divisibile per ; non è divisibile per ; non è divisibile per ;
Poiché nessuno di questi numeri è divisore di
Ricapitolando:
Test di Primalità per divisioni ripetute
Per verificare se un numero naturale
Esistono altri test di primalità più rapidi e complessi di quello appena descritto. Tuttavia, essi si basano su concetti e tecniche più avanzate che esulano dagli argomenti trattati in questa lezione e richiedono una conoscenza più approfondita della Teoria dei Numeri.
Implementazione in Pseudo-Codice
Possiamo provare ad implementare in pseudo-codice il test di primalità per divisioni ripetute:
Nel codice sopra, la funzione
Invece, la funzione MOD
che sta per modulo.
In Sintesi
Riassumendo questa lezione, i punti principali sono:
- Un test di primalità consente di determinare se un numero naturale è primo o no. Ne esistono diversi tipi, alcuni più semplici e altri più complessi.
- Il metodo più semplice per verificare se un numero è primo è il test di primalità per divisioni ripetute.
- Per verificare se un numero
è primo, si procede a dividere per tutti i numeri primi compresi tra e . Se nessuno di questi numeri è divisore di , allora è un numero primo.