問題是:找到200萬以下所有素數的總和。爲什麼我失敗Project Euler#10?
我幾乎做了Erastothenes的東西,下面的程序似乎適用於小數字,即定義LIMIT,因爲10L產生17個答案。
我提交了1179908154作爲答案,由以下程序生成,它是不正確的。
請幫忙指出問題。謝謝。
#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;
}
通過用長長,和%陸用%LLU替換長固定 – idazuwaika 2010-01-01 14:59:17
我很高興我在這個問題上跑,我花了很多挫折的日子! +1 – DMan 2010-05-07 00:33:45