Frage ist: Finden Sie die Summe aller Primzahlen unter 2 Millionen.Warum schaffe ich Project Euler # 10?
Ich habe so ziemlich die Sieve of Erastothes Sache, und das Programm unten scheint für eine kleine Anzahl zu arbeiten, d. H. Definieren LIMIT als 10L produziert 17 als Antwort.
Ich übermittelte 1179908154 als Antwort, wie von dem folgenden Programm erstellt, und es war falsch.
Bitte helfen Sie, das Problem aufzuzeigen. Vielen Dank.
#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;
}
durch Ersetzen lange fixiert mit langen lang und% lu mit% llu – idazuwaika
Ich bin froh, dass ich In dieser Frage lief ich viele frustrierte Tage darauf! +1 – DMan