De Wikipedia:complejidad Tiempo de Criba de Eratóstenes algoritmo
La complejidad del algoritmo es
O(n(logn)(loglogn))
operaciones de bits.
¿Cómo se llega a eso?
Que la complejidad incluye el término loglogn
me dice que hay un sqrt(n)
en alguna parte.
Supongamos que estoy corriendo el tamiz en los primeros 100 números (n = 100
), suponiendo que el marcado de los números de material compuesto lleva tiempo constante (aplicación array), el número de veces que utilizamos mark_composite()
sería algo así como
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
Y para encontrar el siguiente número primo (por ejemplo, para saltar a 7
después de cruzar todos los números que son múltiplos de 5
), el número de operaciones sería O(n)
.
Por lo tanto, la complejidad sería O(n^3)
. ¿Estás de acuerdo?
no sé sobre el resto (demasiado mathy por mi derecho cerebro demasiado sueño ahora), pero la raíz cuadrada proviene del hecho de que si un número no tiene divisores menores que su raíz cuadrada, es primo. Además, acabo de enterarme de que loglog (n) significa que hay una raíz cuadrada. Bonito. –
¿Cómo está el loglog (n) allí significa que hay un sqrt (n) en alguna parte? (@Martinho: ¿Por qué dices que "acabas de aprender esto"?) ¡El análisis real no implica ninguna raíz cuadrada! – ShreevatsaR