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);
}
}