s1Eva_IT2008_T2 Criba de Eratóstenes

Ejercicio: 1Eva_IT2008_T2 Criba de Eratóstenes

Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf

Llenar un arreglo de marcas o tachado con la hipótesis que todos son primos(1).

La prueba de hipótesis consiste en usar un indicador para el número de criba, y otro indicador i para anular marcando con cero (0) las posiciones de los múltiplos.

Inicie eliminando los múltiplos de 2, para luego cambiar a los múltiplos de 3, etc.

Mostrar como resultado solo aquellos números mantienen en marcas válidas (1).

Tarea: Analizar si es necesario hacer funcionar el algoritmo de la prueba de hipótesis hasta n o un número menor. Realizar la validación que n sea mayor que 1.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2008_T2 Criba de Eratóstenes
# Propuesta: edelros@espol.edu.ec

import numpy as np

# INGRESO
n = int(input('primos menores que: '))

# PROCEDIMIENTO
marcado = np.zeros((n+1),dtype=int)

# hipotesis: todos son primos
criba = 2
while (criba<=n):
    marcado[criba] = 1
    criba = criba+1

# no son primos los múltiplos 
criba = 2
while (criba<=n):

    # revisa el primer múltiplo
    i = criba * 2
    while (i<=n):
        marcado[i] = 0
        i = i + criba
    criba = criba+1

# SALIDA
criba = 2
while (criba<=n):
    if marcado[criba]==1:
        print(criba)
    criba = criba+1

resultado del algoritmo

primos menores que: 30
2
3
5
7
11
13
17
19
23
29
>>>