""" Programa para calcular los primeros N numeros primos usando el algoritmo de la criba de Eratostenes Autor: Antonio Carrillo Ledesma """ class Criba_Eratostenes: """ Clase para calcular los primeros N numeros primos usando el algoritmo de la criba de Eratostenes """ def __init__(self, n=10): """Constuctor""" if n > 0: self.N = n else: self.N = 1 self.p = [] # inicializa el arreglo que contendra los primos encontrados # Guarda el primer primo self.p.append(2) self.np = 1 # Empieza la busqueda de primos a partir del numero 3 self.n = 3 self.calcula() def calcula(self): """Calcula los N primeros primos""" print("Calcula de " + str(self.np) + " a " + str(self.N) + " primos ") # Ciclo para buscar los primeros N primos while self.np < self.N: xi = 0 for i in self.p: xi += 1 if (self.n % i) == 0: break if xi == self.np: self.p.append(self.n) self.np += 1 self.n += 1 def visualiza(self, n): """Visualiza los n primeros primos, en caso de ser necesarios los calcula""" if n > self.N: self.N = n self.calcula() # Visualiza los primos encontrados print("Visualiza los primeros " + str(n) + " primos ") for i in range(n): print(self.p[i]) def __str__(self): """retorna los primos calculados""" return "\n\n" + str(self.N) + " Primos calculados:" + str(self.p) if __name__ == "__main__": # Solicita el calculo de los primeros primos p = Criba_Eratostenes(4) print(p) p.visualiza(1) p.visualiza(4) p.visualiza(10) p.visualiza(20) p.visualiza(5) print(p)