ex5
This commit is contained in:
parent
0386d99307
commit
95b3017475
28 changed files with 5800 additions and 0 deletions
73
ex5/code/task_3.cpp
Normal file
73
ex5/code/task_3.cpp
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
#include "task_3.h"
|
||||
#include "mayer_primes.h"
|
||||
#include "timing.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
#include <iostream>
|
||||
#include <omp.h>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
|
||||
int single_goldbach_par(int k) {
|
||||
const vector<int> primes = get_primes(k);
|
||||
int count = 0;
|
||||
|
||||
#pragma omp parallel for reduction(+:count)
|
||||
for (size_t i = 0; i < primes.size(); i++) {
|
||||
for (size_t j = i; j < primes.size(); j++) {
|
||||
if (primes[i] + primes[j] == k) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
vector<int> count_goldbach_par(int n) {
|
||||
const vector<int> primes = get_primes(n);
|
||||
vector<int> counts(n+1);
|
||||
|
||||
#pragma omp parallel reduction(VecAdd:counts)
|
||||
// #pragma omp parallel
|
||||
{
|
||||
vector<int> local_counts(n+1, 0);
|
||||
|
||||
#pragma omp for
|
||||
for (size_t i = 1; i < primes.size(); i++) {
|
||||
for (size_t j = i; j < primes.size(); j++) {
|
||||
int sum = primes[i] + primes[j];
|
||||
if (sum <= n) {
|
||||
local_counts[sum]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
counts += local_counts;
|
||||
// #pragma omp critical
|
||||
// {
|
||||
// for(int k=0; k<n+1; k++){
|
||||
// counts[k] += local_counts[k];
|
||||
// }
|
||||
// }
|
||||
}
|
||||
return counts;
|
||||
}
|
||||
|
||||
|
||||
void print_decomps(int k) {
|
||||
const vector<int> primes = get_primes(k);
|
||||
cout << "\nDecompositions for k = " << k << ": ";
|
||||
|
||||
for (size_t i = 0; i < primes.size(); i++) {
|
||||
for (size_t j = i; j < primes.size(); j++) {
|
||||
if (primes[i] + primes[j] == k) {
|
||||
cout << primes[i] << " + " << primes[j] << ", ";
|
||||
}
|
||||
}
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue