Diferencia entre revisiones de «Test de primalidad de Fermat»

Contenido eliminado Contenido añadido
Aosbot (discusión · contribs.)
m Mantenimiento de Control de autoridades
+reestructurar secciones
Línea 1:
{{Referencias|t=20171029214532}}
El [[pequeño teorema de Fermat]] enuncia que si ''p'' es [[número primo|primo]] y ''a'' es [[coprimo]] con ''p'', entonces
 
El '''test de primalidad de Fermat''' es un algoritmo probabilístico que hace uso del [[pequeño teorema de Fermat]]. este teorema enuncia que si ''p'' es [[número primo|primo]] y ''a'' es [[coprimo]] con ''p'', entonces
''a''<sup>''p''-1</sup> - 1 es [[divisible]] por ''p''. Esto también se puede expresar así: ''a''<sup>''p''-1</sup> = 1 ([[aritmética modular|mod]] ''p'').
 
:''a''<sup>''p''-1</sup> - 1 es [[divisible]] por ''p''.
Resulta que el recíproco de este teorema suele ser verdad: si ''p'' es compuesto, entonces ''a''<sup>''p''-1</sup> es poco probable que sea congruente con 1 módulo ''p'' para un valor arbitrario de ''a''.
 
''a''<sup>''p''-1</sup> - 1 es [[divisible]] por ''p''. Esto también se puede expresar así: ''a''<sup>''p''-1</sup> = 1 ([[aritmética modular|mod]] ''p'').
El programa de [[Criptografía|cifrado]] [[PGP]] aprovecha esta propiedad del teorema para comprobar si los grandes números aleatorios que elige son primos. Comprueba los valores que llamaremos ''x'' utilizando 4 valores de ''a'' (llamados ''testigos'') utilizando la fórmula anterior. Estos cuatro valores son 2, 3, 5 y 7, los cuatro primeros números primos. Si 1 = 2<sup>''x''-1</sup> = 3<sup>''x''-1</sup> = 5<sup>''x''-1</sup> = 7<sup>''x''-1</sup> (mod ''x''), entonces sabe que el número ''x'' es probablemente primo. Si de alguna de las expresiones anteriores se obtiene un valor distinto de 1, entonces ''x'' es definitivamente compuesto. Utilizar un número mayor de testigos disminuye la probabilidad de que un número compuesto ''x'' parezca primo, aunque muy pocos números grandes pueden engañar a los cuatro testigos ya mencionados.
 
Resulta que el recíproco de este teorema suele ser verdad: si ''p'' es compuesto, entonces ''a''<sup>''p''-1</sup> es poco probable que sea congruente con 1 módulo ''p'' para un valor arbitrario de ''a''. Sin embargo, tomando un número compuesto ''n'' y eligiendo un ''a'' coprimo con este, algunos números compuestos pueden hacer fallar este test. Estos números se denominan [[pseudoprimo]]s.
El artículo [[Pseudoprimo]] ofrece una discusión en profundidad sobre los números que engañan a los [[test de primalidad|tests de primalidad]] como estos.
 
== Algoritmo ==
Línea 28 ⟶ 27:
Utilizando algoritmos rápidos de [[exponenciación modular]], se puede comprobar que el [[complejidad computacional|tiempo de ejecución]] de este algoritmo es O(''k'' × log<sup>2</sup>''n'' × log log ''n'' × log log log ''n''), donde ''k'' representa el número de veces que se comprueba la [[congruencia]] para el número aleatorio ''a'' y ''n'' es el número a testear.
 
== Usos ==
 
El programa de [[Criptografía|cifrado]] [[PGP]] aprovecha esta propiedad del teorema para comprobar si los grandes números aleatorios que elige son primos. Comprueba los valores que llamaremos ''x'' utilizando 4 valores de ''a'' (llamados ''testigos'') utilizando la fórmula anterior. Estos cuatro valores son 2, 3, 5 y 7, los cuatro primeros números primos. Si 1 = 2<sup>''x''-1</sup> = 3<sup>''x''-1</sup> = 5<sup>''x''-1</sup> = 7<sup>''x''-1</sup> (mod ''x''), entonces sabe que el número ''x'' es probablemente primo. Si de alguna de las expresiones anteriores se obtiene un valor distinto de 1, entonces ''x'' es definitivamente compuesto. Utilizar un número mayor de testigos disminuye la probabilidad de que un número compuesto ''x'' parezca primo, aunque muy pocos números grandes pueden engañar a los cuatro testigos ya mencionados.
 
== Véase también ==
*[[Test de primalidad]]
 
== Enlaces externos ==
*{{MathWorld|FermatsPrimalityTest|Fermat's Primality Test}}
{{Control de autoridades}}
[[Categoría:Tests de primalidad]]