Test de primalitat de Fermat
El test de primalitat de Fermat és un algorisme aleatori per a determinar si un nombre és un nombre primer probable.
Concepte
[modifica]El petit teorema de Fermat estableix que si p és primer i , llavors
Si es vol provar si p és primer, llavors es pot triar un nombre aleatori a en l'interval i veure si la igualtat es compleix. Si la igualtat no es compleix per a qualsevol valor de a, llavors p és compost. Si la igualtat no es compleix per a molts valors de a, llavors es pot dir que p és un nombre primer probable, o un pseudoprimer.
Pot ser que els tests que es facin no es triï cap valor de a tal que la igualtat falli. De qualsevol a tal que
quan n és compost es diu que és un Fermat mentider. Si es tria un a tal que
llavors es diu que a és un Fermat testimoni de què n és compost.
Algorisme i temps d'execució
[modifica]L'algorisme es pot escriure tal com segueix:
Algorisme test de primalitat de Fermat (Ordre de complexitat ) |
Entrada: Un nombre natural n>1, el nombre k de cops que s'executa el test i que determina la seva fiabilitat. Sortida: COMPOST si n és compost y POSSIBLE PRIMER si n és un nombre primer probable.
|
Si es fa servir algorismes ràpids per a la exponenciació modular, el temps d'execució d'aquest algorisme és O (k × log²n × log log n × log log log n), on k és el nombre de cops que es tria un nombre aleatori a, i n és el nombre que es vol provar per a veure si és o no primer.
Comentaris
[modifica]Hi ha certs valors de n coneguts com a nombres de Carmichael per als quals tots els valors de a per als quals el mcd(a,n)=1 són Fermat mentiders. Tot i que els nombres de Carmichael són rars, n'hi ha prou perquè el test de primalitat de Fermat sovint no es faci servir en favor d'altres tests de primalitat tal com el de Miller-Rabin i el de Solovay-Strassen.
En general, si n no és un nombre de Carmichael llavors pel cap baix la meitat de tots els
són Fermat testimonis. Per demostrar-ho, sia a un Fermat testimoni i a1, a₂, ..., as siguin Fermat mentiders. Llavors
I així tot a × ai per i = 1, 2, ..., s són Fermat testimonis.
Utilització
[modifica]El programa de xifratge PGP fa servir aquest test de primalitat en els seus algorismes. La possibilitat que PGP generi un nombre de Carmichael és inferior a 1 en 1050, que és més que adequat per aplicacions pràctiques.
Referències
[modifica]- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Pages 889–890 of section 31.8, Primality testing.