使用omp实现计算1~10000之间所有素数的和
时间: 2024-03-05 11:47:49 浏览: 71
好的,以下是使用 OpenMP 实现计算 1~10000 之间所有素数的和的 C++ 代码:
```cpp
#include <iostream>
#include <omp.h>
using namespace std;
bool isPrime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i <= n / 2; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int sum = 0;
#pragma omp parallel for reduction(+:sum)
for (int i = 1; i <= 10000; i++) {
if (isPrime(i)) {
sum += i;
}
}
cout << "Sum of prime numbers from 1 to 10000: " << sum << endl;
return 0;
}
```
在这段代码中,我们使用了 OpenMP 的 `pragma omp parallel for` 来并行化 for 循环,同时使用 `reduction` 指令来确保多个线程能够正确地累加结果。其中 `isPrime` 函数用于判断一个数是否为素数。
阅读全文