c - OpenMP 并行错误 : missing increment expression

标签 c parallel-processing openmp

我正在尝试传递代码来列出素数 OpenMP 数字,我有两个问题,

  • 第一个问题是删除 Break 并且代码可以正常工作
  • 第二个问题是标记此错误 error: missing increment expression
  • 列表项

    for (count = 2; count <= n;) 行中

    //如果我添加表达式,因为 count++ 代码无法正常工作。

这是我的代码:

int n, i = 3, count, c;
// n is the number's prime
for ( count = 2 ; count <= n ;    )
{
    for ( c = 2 ; c <= i - 1 ; c++ )
    {
        if ( i%c == 0 )
            break;

    }
    if ( c == i )
    {
        printf("%d\n",i);
        count++;
    }
  i++;
}

}

最佳答案

取决于代码的其余部分,但是:

  • 如果删除第一个 FOR 循环中的增量,错误就很明显。你不能删除它。 “count++”为必填项。

  • 检查 count 的初始值是否小于 n(即:如果“n”为 1,并且从 count =2 开始,FOR 循环将不会启动)

  • 请注意:在第一个 IF block 中,您尝试修改“count”的值,但 FOR 循环正在使用该变量来控制剩余的迭代。正如我所说,这取决于代码功能,但通常您不希望发生这种情况(修改循环控制变量)

如果没有更多信息,恐怕我们无法为您提供更多帮助。

关于c - OpenMP 并行错误 : missing increment expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28402508/

相关文章:

c - 为什么这个 OpenMP 代码可以在 Linux 上运行,但不能在 Windows 上运行?

macos - fatal error : 'omp.h' file not found

C - 为什么这个循环运行两次?

C 中的常量正确性

c# - 如何使用任务或并行调用以正确的顺序获得翻译结果?

c# - 如何在 C# 中并行处理输入直到某些条件为真

c - 在 C switch 语句中的 case 之间跳转

c++ - C++中强制转换的结果是什么?

java - 使用并行流返回最快的提供值

c++ - 循环C++中的段错误Openmp