Test di primalità probabilistici
Il piccolo teorema di Fermat afferma che
Se a è in intero e p è un numero primo allora ap=a modulo p
Applicando la legge logica che afferma essere equivalenti p => q e non q => non p abbiamo
Se esiste un intero a 1 < a < p tale che ap != a modulo p allora p non è primo (probabilmente p
non è primo)
Allo stesso modo ricordiamo un altro importante teorema che afferma:
per ogni coppia di interi x, y e per ogni p primo => (x+y)p=xp+yp (mod p)
La dimostrazione di questo teorema molto semplice si basa sul teorema del binomio (sviluppo)
Quindi in modo analogo:
Se esiste una coppia di interi x, y | (x+y)p != xp+yp (mod. p) allora p non è primo
(probabilmente p non è primo)
Possiamo allora tentare di unire i due teoremi per formulare un interessante algoritmo probabilistico
che ci dirà in modo veloce se un numero è un primo o è composto.
ALGORITMO:

Sia dato un p intero dispari e non un quadrato perfetto

Tramite un generatore di numeri casuali formiamo delle coppie (un certo numero, più è alto
più è alta la probabilità di non fallire) di interi casuali x, y con

1 < x < p, 1 < y < p
Se troviamo per tutte le coppie x, y (x+y)p = xp+yp (mod. p) e (xp=x mod p, yp=y mod p)
allora p è probabilmente primo.

Altrimenti se esistono x, y | (x+y)p = xp+yp (mod. p) e (xp != x mod p oppure yp != y mod p)
allora probabilmente p non è primo.
Nota:
(x+y)p=xp+yp=x+y=(x+y) mod p ovvero zp=z mod p , con z= x+y