Python - función algoritmo Erastotenes

 
Vista:
sin imagen de perfil

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

función algoritmo Erastotenes

Publicado por xve (1646 intervenciones) el 23/10/2013 22:48:10
Hola Laura, he probado tu código, y realmente, poner ese numero tan grande, el ordenador que seca en el bucle un montón de rato... yo lo he tenido que cancelar...

En cambio, si pones 10000 veras que tarda unos 10 segundos en mi caso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

función algoritmo Erastotenes

Publicado por laura (2 intervenciones) el 24/10/2013 13:45:22
Y como puedo hacer para hacer esa función y que me funcione con el 10.000.000??? Porqué es eso lo que me piden. Y me veo perdidisima.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

función algoritmo Erastotenes

Publicado por xve (1646 intervenciones) el 24/10/2013 15:46:17
Hola Laura, si te funcionará correctamente, lo que seguramente tendrás que esperar algunas horas a que termine...

Es un tema de calculo... por lo que dependerá del procesador que dispongas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar