Cómo escribir un programa en Java para encontrar la suma de números primos de menos de 2 millones

La respuesta de Tejit responde a su pregunta. Aquí hay un consejo para ahorrar tiempo, ya que este programa puede tardar mucho tiempo en ejecutarse.

Un número primo (por encima de 6) tiene que ser siempre uno menos o uno más que el sexto múltiplo (lo inverso no siempre es cierto). Por lo tanto, solo puede verificar estos números en su algoritmo, 1, 5 y 7 (alrededor de 6), 11 y 13 (alrededor de 12), 17 y 19 (alrededor de 18), etc. Esto reducirá el tiempo necesario para ejecutar el programa aproximadamente 70% porque solo verificará 2 números en cada 6 números.

Además, en el segundo bucle (j bucle en el programa de Tejit) puede simplemente recorrer los números primos hasta i / 2 (Tejit usó todos los números hasta i-1). Por ejemplo, para verificar si 21 es un número primo, puede verificar si el número es múltiplo de cualquier factor primo menor que 21/2, es decir, 10.5 o 10.
Por lo tanto, solo verificará 2, 3, 5 y 7. Solo 4 números para verificar frente a todos los números menores que 21. Esto también puede ahorrar un tiempo significativo en la ejecución.

Es posible que pueda almacenar los números primos que recuperó en cada paso en una matriz para este propósito o algo así. Lo siento, ya no uso Java y olvidé la sintaxis básica 🙁

Utilice el algoritmo Seive Prime

http://www.geeksforgeeks.org/sie

Aquí está el código:
Adjunto como una imagen (para que no copie , comprenda y mejore).

Solo te daré el algoritmo,

  1. Encuentra los números primos por debajo de 2 millones.
    Puede hacer esto simplemente comprobando si un número dado N es divisible por todos los números del 2 al sqrt (N). Nota : Siga verificando si N es par o impar primero. Todos los números primos excepto 2 son impares.

O: use el tamiz de Eratóstenes
2. Mantenga un contador sum_of_primes y continúe agregando una vez que identifique una nueva prima.