我正在创建一个基本的素数检查器,基于C - 确定一个数字是否为素数 ,但是使用OpenMP.
int isPrime(int value)
{
omp_set_num_threads(4);
#pragma omp parallel for
for( int j = 2; j * j <= value; j++)
{
if ( value % j == 0) return 0;
}
return value;
}
Run Code Online (Sandbox Code Playgroud)
使用-fopenmp进行编译时,GCC版本4.7.2 出错,说明invalid controlling predicatefor循环.
看起来这个错误是由for循环中的j平方引起的.有没有办法解决这个问题,仍然可以从算法中获得所需的输出?