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 が原因のようです。これを回避し、アルゴリズムから目的の出力を得る方法はありますか?