我已经为筛子编写了代码,但程序仅针对小于或等于 1000000 的数组大小运行。对于其余较大的情况,会发生一个简单的 SIGSEGV。这可以运行案例> 1000000。或者我错在哪里?
#include <stdio.h>
int main()
{
unsigned long long int arr[10000001] = {[0 ... 10000000] = 0};
unsigned long long int c=0,i,j,a,b;
scanf("%llu%llu",&a,&b);
for(i=2;i<=b;i++)
if(arr[i] == 0)
for(j=2*i;j<=b;j+=i)
arr[j] = 1;
for(i=(a>2)?a:2;i<=b;i++)
if(arr[i] == 0)``
c++;
printf("%llu",c);
return 0;
}