我正在创建一个基于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;
}
使用-fopenmp编译时,GCC 版本 4.7.2 出错,说明invalid controlling predicate
与 for 循环有关。
看起来这个错误是由 for 循环中的 j 平方引起的。有没有办法可以解决这个问题,并且仍然可以从算法中获得所需的输出?