tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
33
Task/Parallel-calculations/C/parallel-calculations.c
Normal file
33
Task/Parallel-calculations/C/parallel-calculations.c
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#include <stdio.h>
|
||||
#include <omp.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
int data[] = {12757923, 12878611, 12878893, 12757923, 15808973, 15780709, 197622519};
|
||||
int largest, largest_factor = 0;
|
||||
|
||||
omp_set_num_threads(4);
|
||||
/* "omp parallel for" turns the for loop multithreaded by making each thread
|
||||
* iterating only a part of the loop variable, in this case i; variables declared
|
||||
* as "shared" will be implicitly locked on access
|
||||
*/
|
||||
#pragma omp parallel for shared(largest_factor, largest)
|
||||
for (int i = 0; i < 7; i++) {
|
||||
int p, n = data[i];
|
||||
|
||||
for (p = 3; p * p <= n && n % p; p += 2);
|
||||
if (p * p > n) p = n;
|
||||
if (p > largest_factor) {
|
||||
largest_factor = p;
|
||||
largest = n;
|
||||
printf("thread %d: found larger: %d of %d\n",
|
||||
omp_get_thread_num(), p, n);
|
||||
} else {
|
||||
printf("thread %d: not larger: %d of %d\n",
|
||||
omp_get_thread_num(), p, n);
|
||||
}
|
||||
}
|
||||
|
||||
printf("Largest factor: %d of %d\n", largest_factor, largest);
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue