
función algoritmo Erastotenes
Publicado por laura (2 intervenciones) el 23/10/2013 21:02:31
Hola estoy en primero de ingeniería informática y tengo que hacer un ejercicio de python en el cual tengo que hacer una función mediante el algoritmo de Erastotenes en el que le pido un numero "n" al usuario y como resultado me imprime los números primos desde 2 hasta "n".
lo que yo he hecho ha sido lo siguiente:
Hasta aquí diría que esta bien, porque me da el resultado correcto, el problema es que la siguiente parte que tengo que hacer es otra función que me imprima el tiempo que se tarda en calcular mediante el algoritmo de Erastotenes los números primos menores que 10.000.000 y cuantos números primos hay.
He hecho lo siguiente:
Pero en el momento de usar esta función se me queda el ordenador colgado, como si estuviera pensando, me imagino que debe ser que es porque el número que me piden es demasiado grande.
Si alguien seria tan amable de ayudarme me haría un enorme favor.
Muchas gracias de antemano.
lo que yo he hecho ha sido lo siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
import time
import math
def era(n):
llista=""
llistaA= list(range(2,n+1))
for i in llistaA:
primo=1
for k in llistaA:
if i%k==0 and i<>k:
primo=0
if primo==1: llista+=str(i)+","
print "Els nombres primers fins ",n,"son: ",llista
Hasta aquí diría que esta bien, porque me da el resultado correcto, el problema es que la siguiente parte que tengo que hacer es otra función que me imprima el tiempo que se tarda en calcular mediante el algoritmo de Erastotenes los números primos menores que 10.000.000 y cuantos números primos hay.
He hecho lo siguiente:
1
2
3
4
5
def era2():
t1=time.clock()
e=era(10000000)
t2=time.clock()
print "El temps de proces ha estat %0.3f ms" %((t2-t1)*1000)
Pero en el momento de usar esta función se me queda el ordenador colgado, como si estuviera pensando, me imagino que debe ser que es porque el número que me piden es demasiado grande.
Si alguien seria tan amable de ayudarme me haría un enorme favor.
Muchas gracias de antemano.
Valora esta pregunta


0