- División por tentativa
-
División por tentativa
La división por tentativa es el algoritmo de factorización de enteros más sencillo y fácil de entender.
Dado un entero compuesto n (a lo largo de este artículo, n será "el entero a factorizar"), la división por tentativa consiste en intentar dividir n entre todo número primo menor o igual a . Si se encuentra un número que es divisor de n, en división entera, ese número es un factor de n.
Es posible determinar un límite para los factores primos. Supón que P(i) es el i-ésimo primo, de modo que P(1) = 2, P(2) = 3, etc. Entonces el valor del último número primo probado como un posible factor de n es P(i) donde P(i + 1)2 > n; la igualdad aquí querría decir que P(i + 1) es un factor. Aunque todo esto está muy bien, normalmente el inconveniente de inspeccionar un n concreto para determinar el valor correcto de i es más costoso que simplemente probar con el único candidato innecesario P(i + 1) que estaría incluido en la tentativa con todos los P(i) tales que . Puede la raíz cuadrada de n ser entera, entonces es un factor y n es un cuadrado perfecto, pero no es esta una manera buena de encontrarlos.
La división por tentativa garantiza encontrar un factor de n, puesto que comprueba todos los factores primos posibles de n. Por tanto, si el algoritmo no encuentra ningún factor, es una prueba de que n es primo.
En el peor caso, la división por tentativa es un algoritmo costoso. Si se empieza en 2 y se va subiendo hasta la raíz cuadrada de n, el algoritmo requiere
tentativas, donde π(x) es la función contador de primos, el número de primos menores que x. En lo anterior no se ha tenido en cuenta la sobrecarga del test de primalidad para obtener los números primos candidatos a ser factores. Si se utiliza una variante sin el test de primalidad, sencillamente dividiendo por todo número impar menor que la raíz cuadrada de n, ya sea primo o no, puede llegar a necesitarse alrededor de
tentativas, que para un n grande es peor.
Esto significa que para un n con factores primos grandes de tamaños similares (como aquellos empleados en la criptografía asimétrica), la división por tentativa es computacionalmente impracticable.
Sin embargo, para un n con al menos un factor pequeño, la división por tentativa puede ser un método rápido para encontrar ese factor pequeño. Vale la pena percatarse de que para un n aleatorio, existe un 50% de probabilidad de que 2 sea un factor de n, un 33% de probabilidad de que 3 sea un factor, y así sucesivamente. Se puede observar que el 88% de todos los enteros positivos tiene un factor menor que 100, y que el 91% tiene un factor menor que 1000.
Enlaces externos
- Calculadora en Javascript de Factores Primos mediante divisiones por tentativa. Puede trabajar con números menores que 9×1015
Categorías: Algoritmos de factorización de enteros | Tests de primalidad
Wikimedia foundation. 2010.