En realidad solo es necesario dividir entre los números primos inferiores a la raíz de n. Aquí dejo mi pequeña (15 líneas) aportación:
- Código: Seleccionar todo
def buscar_sumar_primos(n):
lista_primos = [1]
sum = 1
for num in range(2, n + 1):
for div in (lista_primos[1:]):
if num % div == 0:
break
else:
lista_primos.append(num)
sum += num
return lista_primos, sum
(lista_primos, suma)=buscar_sumar_primos(int(raw_input("Introduzca el final del intervalo: ")))
print("Los números primos encontrados son:"), lista_primos, ("\nEl sumatorio es:"), suma
El código de Juanxo es fácil aunque raro si no se conoce esa expresión. Es una expresión del tipo A si C sino B, es decir si se cumple C se devuelve A sino se devuelve B. En éste caso si maximo > 2 entonces j = 2, sino j = maximo. En el bucle while utiliza dos condiciones, que j no llegue al final (j < maximo) o que el número sea primo i % j != 0, en el if de la línea siguiente hace la comprobación, si j ha llegado al final j == maximo significa que el número es primo y lo añade, si j != maximo es que el bucle se ha "roto" antes de llegar al final (por culpa de la segunda condición) lo que significa que el número no es primo.
Un Saludo!
De la API al IDE y del IDE a la API.