Openmp并行不工作

时间:2016-03-05 09:00:37

标签: c parallel-processing

#include<stdio.h>
#include<omp.h>
main()
{
int prime[1000],i,j,n;
printf("\nIn order to find prime numbers from 1 to n, enter the value of       n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
    prime[i]=1;
}
prime[1]=0;
for(i=2;i*i<=n;i++)
{
    if(prime[i]==1)
      {
         /* multi-threading to remove multiples of prime number i from the list (array) */

        #pragma omp parallel for
        for(j=i*i;j<=n;j=j+i)
          {
              prime[j]=0;
          }
      }
}
printf("\nPrime numbers from 1 to %d are\n",n);

for(i=2;i<=n;i++)
{
if(prime[i] == 1)
    {
        printf("%d\t ",i);
    }
}
printf("\n");

}

此程序用于打印从2到n的素数。 该计划的问题是:

  1. 不能输入超过8的数字,例如:如果输入10,程序会被卡住
  2. O / p不是素数,例如:如果我输入5,o / p是2 3 4 5而o / p应该是2 3 5 这个程序顺序运行正常,但是当我删除“#pragma omp parallel for”行时它运行正常。我正在使用codeblocks.I在编译器中编写了“-fopen mp”并链接了libgomp-1.dll文件。请帮忙。

0 个答案:

没有答案