La pregunta es: Encuentre la suma de todos los primos por debajo de 2 millones.¿Por qué fallo Project Euler # 10?
Prácticamente hice lo de Sieve of Erastothenes, y el siguiente programa parece funcionar para un número pequeño, es decir, define LÍMITE ya que 10L produce 17 como respuesta.
Presenté 1179908154 como la respuesta, según lo producido por el siguiente programa, y era incorrecto.
Por favor ayuda a identificar el problema. Gracias.
#include <stdio.h>
#define LIMIT 2000000L
int i[LIMIT];
int main()
{
unsigned long int n = 0, k, sum = 0L;
for(n = 0; n < LIMIT; n++)
i[n] = 1;
i[0] = 0;
i[1] = 0;
unsigned long int p = 2L;
while (p*p < LIMIT)
{
k = 2L;
while (p*k < LIMIT)
{
i[p*k] = 0;
k++;
}
p++;
}
for(n = 0; n < LIMIT; n++)
if (i[n] == 1)
{
sum += n;
}
printf("%lu\n",sum);
return 0;
}
fija mediante la sustitución de largo con largo tiempo, y% lu con% LLU – idazuwaika
Me alegro de corrió en esta pregunta, pasé muchos días frustrados en esto! +1 – DMan