我在解决有关Project Euler的问题时阅读了 Eratosthenes 的筛子。我相信你们知道我在说哪个问题。事情就是这样。我的代码设法正确显示了 100 万以下的所有素数。但是,当我为 200 万个尝试相同的实现时,它给了我一个分段错误...我对错误发生的原因有一定的了解,但不知道如何纠正它...这是 100 万以下素数的代码.
#include<stdio.h>
int main(void)
{
int i,k=2;
int j;
int n=1000000;
int prime[2000000]={};
for(i=0;i<n;i++) // initializes the prime number array
{
prime[i]=i;
}
for(i=2;i<n;i++) // Implementation of the Sieve
{
if(prime[i]!=0)
{
for(j=2;j<n;j++)
{
{
prime[j*prime[i]]=0;
if(prime[i]*j>n)
break;
}
}
}
}
for(i=0;i<n;i++) // Prints the prime numbers
if(prime[i]!=0)
{
printf("%d\n"prime[i]);
}
return(0);
}
}