Sí, de dos maneras diferentes.
El punto técnico a destacar aquí es que los problemas de tiempo constante tienen una complejidad de tiempo constante. Realmente necesita expresar el problema como “agregar los primeros N primos” y preguntar sobre la complejidad del tiempo con respecto a N. Si realmente solo le importan los primeros 10 primos, entonces el código
print 2+3+5+7+11+13+17+19+23+29
- ¿Cuál es el mejor algoritmo de sustracción automática de fondo para una sola imagen?
- Cómo aprender a ser bueno al traducir el problema inicial en un problema de coincidencia gráfica bipartita
- Soy completamente nuevo en algoritmos. ¿Cuál es el mejor libro / curso / método para realmente entrar en ellos?
- ¿Podemos contar una tarea como una instrucción al calcular un algoritmo?
- ¿Cómo comparamos la complejidad del espacio y el tiempo como O (n ^ 2) tiempo versus O (n) espacio y O (n) tiempo?
es igual de bueno
Si observa el ciclo, una optimización simple es dejar de hacer la división de prueba en el primer número que divide [math] j [/ math].
Una optimización más sutil es comenzar desde el primo más pequeño que conoces, no desde el más grande. La mitad de los números son divisibles por 2. 1/3 de los números son divisibles por 3, etc. Si su primo más grande es [matemática] x [/ matemática], entonces ningún número antes de [matemática] x ^ 2 [/ matemática] necesita ser probado a través de la división por [math] x [/ math].
El impacto de esos cambios es difícil de expresar en términos exactos y requiere cierta teoría de números, pero hace una diferencia práctica.
Sin embargo, una mejor idea es usar el Tamiz de Eratóstenes en lugar de la división de prueba. El tamiz (cuando se implementa correctamente) tiene una complejidad de tiempo [matemática] O (n \ log \ log n) [/ matemática].