我想并行外部 for 循环,但我尝试了下面的说明,结果证明是错误的。我希望你能帮助解决这个问题。
#pragma omp parallel for private(i,ii,j) reduction(+:Number1)
for(ii=1;ii<numbers_of_sieve;ii++)
{
for(j=0;j<area;j++)
flags[j]=1;
int a=sqrt((double)(1+ii))*1024;
for(int k=0;k<Number;k++)
{
if(sieve[k]<=a)
{
__int64 x=(sieve[k]+(-(ii*area))%sieve[k])%sieve[k];
for(__int64 m=ii*area+x;m<(1+ii)*area;m+=sieve[k])
flags[m-ii*area]=0;
}
}
for(i=0;i<(1<<20);i++)
{
if(flags[i]==1)
{
//fprintf(fp,"%I64d\t",i+ii*area);
Number1++;
}
}
}
谢谢!