Diferencia entre revisiones de «Implementación de algoritmos de teoría de números/Criba de Eratóstenes»

Contenido eliminado Contenido añadido
m Revertidos los cambios de 189.189.143.242 (disc.) a la última edición de 186.154.128.75
Etiqueta: Reversión
Línea 386:
 
=== Python ===
==== Versión 1 ====
Python 3:
<source lang="Python">
Línea 397 ⟶ 396:
 
criba_eratostenes(1000)
</source>
 
==== Version 2. Optimizada ====
Python 3:
<source lang="Python">
import math
def sievePrime(MAX_COTA):
primes = [] # Guarda los numeros primos encontrados
isPrime = [True for i in range(MAX_COTA + 1)] # Genera una lista de MAX_COTA elementos con True
cota = math.sqrt(MAX_COTA) + 1
isPrime[0] = False
isPrime[1] = False
primes.append(2) # Es el primer y único número par primo
for j in range(4,MAX_COTA+1, 2): # Optimización 01
isPrime[j] = False # Todos los pares no son primos
for k in range(3, MAX_COTA+1,2): # Optimización 2
if isPrime[k]:
primes.append(k)
if k <= cota:
for i in range(k*k, MAX_COTA+1, 2*k): # Optimizacion 3
isPrime[i] = False # Todos los multiplos de ese número no son primos
for i in range(len(primes)):
#print("{}:\t{}".format(i,primes[i]))
yield primes[i]
 
for j in sievePrime(100000):
print("{} ".format(j))
</source>