OpenMP并行程序求101-200间的素数
时间: 2023-08-12 17:03:19 浏览: 107
求101到200之间的素数
5星 · 资源好评率100%
好的,下面是使用OpenMP并行程序求101-200间的素数的代码:
```c
#include <stdio.h>
#include <omp.h>
int main() {
int i, j, is_prime, count = 0;
#pragma omp parallel for private(is_prime)
for (i = 101; i <= 200; i++) {
is_prime = 1;
for (j = 2; j < i; j++) {
if (i % j == 0) {
is_prime = 0;
break;
}
}
if (is_prime) {
#pragma omp atomic
count++;
printf("%d is a prime number.\n", i);
}
}
printf("Total count of prime numbers: %d\n", count);
return 0;
}
```
这个程序使用了OpenMP的`omp parallel for`指令来并行化循环,其中`private(is_prime)`表示每个线程都有自己的`is_prime`变量,避免了数据竞争的问题。另外,使用`omp atomic`指令来保证`count`变量的原子性操作,避免了多个线程同时对其进行修改的问题。
阅读全文