ida*_*ika 11 c sieve-of-eratosthenes
问题是:找出200万以下所有素数的总和.
我几乎完成了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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3864 次 |
| 最近记录: |