La domanda è: Trova la somma di tutti i numeri primi sotto 2 milioni.Perché non riesco a Project Euler # 10?
Ho praticamente fatto il setaccio di Erastothenes, e il programma seguente sembra funzionare per un numero limitato, quindi definire LIMIT come 10L produce 17 come risposta.
Ho inviato 1179908154 come risposta, come prodotto dal seguente programma, ed era errato.
Si prega di aiuto indicando il problema. Grazie.
#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;
}
fisso sostituendo lungo con lunga lunga, e% lu con% llu – idazuwaika
Sono contento di aver corso in questa domanda, ho trascorso molti giorni frustrati su questo! +1 – DMan