¿Podemos hacerlo mejor en complejidad de tiempo que el siguiente código para calcular la suma de los primeros 10 primos?

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

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].

Estoy de acuerdo con la otra persona aquí. Si están buscando la suma de los primeros n números primos, puede usar el Tamiz de Eratóstenes (como sugirió la persona que está debajo de mí), una Matriz y luego sumar los números al final. Si están buscando solo la suma de los primeros 10 primos, imprima 129 y encuentre un mejor sitio de algoritmos.

Puede considerar HackerRank, LeetCode o CodeChef. Cada uno de estos va bien. Leetcode tiene preguntas que están específicamente dirigidas a las personas que se preparan para las entrevistas. Buena suerte.