¿Cuál es la comparación en algoritmo de Sieve of Sundaram y Sieve of Eratosthenes con tiempo-complejidad?

  • Tamiz de Sundaram:
    • Alogrithm:
      1. Cree una lista de N enteros positivos (1,2 …, N)
      2. Iterar sobre ellos usando el bucle anidado de i, j donde [matemática] 1 <= i <= j para todo i, j ε N [/ matemática]
      3. Marque [matemáticas] i + j + 2 * i * j [/ matemáticas] como no primo.
      4. Los números restantes se duplican y se incrementan en uno, es decir, [matemáticas] n = 2 * k + 1 [/ matemáticas]
    • Salida: Esto dará todos los enteros primos impares, es decir, enteros primos, excepto 2
    • Complejidad del tiempo:
      1. Tiempo necesario para iterar sobre N números y marcar no primos, [matemática] T (N) = N + T (N – 1) [/ matemática]
      2. La operación anterior reducirá la lista de tamaños a la mitad.
      3. Por lo tanto, el tiempo empleado en el siguiente paso (N – 1) será, [matemática] T (N – 1) = N / 2 + T (N – 2) [/ matemática]
      4. Cuando i, j es máximo, no quedan más no primos. Entonces el caso trivial sería [matemática] T (1) = k [/ matemática]
      5. Para duplicar el resto e incrementar en uno, el tiempo será constante para cada uno. Total de [matemática] O (N) [/ matemática] que es definitivamente menor que el tiempo necesario para eliminar los no primos.
      6. Por lo tanto, [matemáticas] T (N) = N + N / 2 + N / 3 +… + 1 = [/ matemáticas] [matemáticas] O (N log N) [/ matemáticas]

  • Tamiz de Eratóstenes:
    • Algoritmo:
      1. Cree una lista de N enteros positivos a partir de 2 (2 …, N)
      2. Iterar sobre la lista en bucle anidado por i, j donde [matemática] 2 <= i <= j para todo i, j ε N [/ matemática]
      3. Para cada primo [matemático] i [/ matemático], marque [matemático] i * j [/ matemático] como no primo.
      4. Los números restantes se imprimen tal como están.
    • Salida: todos los enteros primos incluyendo 2
    • Complejidad del tiempo:
      1. Tiempo necesario para iterar sobre N no primo, [matemática] T (N) = N + T (N – 1) [/ matemática]
      2. En el siguiente paso, encontrar el número primo inmediato lleva algo de tiempo t y [matemáticas] T (N – 1) = t * N / 2 + t * T (N – 1) [/ matemáticas]
      3. El caso trivial, encontrar el último no primo es nuevamente [matemática] T (1) = k [/ matemática]
      4. Iterar sobre el descanso tomará tiempo constante para cada uno, es decir, la complejidad total sería [matemática] O (N) [/ matemática] que es menor que la búsqueda.
      5. Por lo tanto, [matemáticas] T (N) = N + N / 2 * (1 + 1/2 +… + 1 / N) + N / 3 * (1 + 1/2 +… + 1 / N) +… + 1 = O (N log (log N)) [/ math]

More Interesting

¿Es posible construir un algoritmo (para ejecutar en una computadora con recursos de espacio finito) que tomará como entrada un flujo de lanzamientos de monedas al azar imparciales (probabilidad independiente de caras 1/2) y emitirá caras con probabilidad irracional esperada?

¿Cuál es la forma correcta de escribir un algoritmo? ¿Podemos usar la sintaxis del lenguaje en el que estamos escribiendo?

Creamos un algoritmo de software único para medir / cuantificar las diferencias de las imágenes a escala nano-planetaria. ¿Cómo monetizamos esto?

¿Cuál es la relación entre la complejidad del algoritmo y la complejidad del software?

¿Cómo funciona el algoritmo de vista en Quora?

¿Cómo implemento un árbol N-ary en C?

¿Por qué mi código JavaScript muestra un error de bucle infinito en la línea 7? ¿Por qué no está eliminando los elementos de la matriz de entrada?

¿Cuáles son algunos libros excelentes sobre la programación de algoritmos ARM?

¿Cuáles son las debilidades del descenso de gradiente?

¿Cuáles son las características de un algoritmo codicioso?

¿Cómo podemos lograr la inserción en el hash en el peor de los casos en O (1) mediante el uso de la matriz, mientras que las matrices tienen problemas de extensión en filledup?

¿Qué es un algoritmo hash?

¿Cómo usamos la función de crecimiento de un algoritmo para determinar su orden?

Cómo encontrar subrangos no decrecientes y no crecientes en una matriz

¿Cómo podemos resolver el siguiente problema en O (n)?