Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.13 KB | None | 0 0
  1. #include <mpi.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <math.h>
  6.  
  7.    
  8. const int N = 1000000;
  9.  
  10. int isPrime(int X) {
  11.    
  12.     if (X == 1) return 0;
  13.     if (X == 2) return 1;
  14.    
  15.     int i;
  16.     double limit = sqrt(X);
  17.    
  18.     for (i = 2; i <= limit; i++) {
  19.         if (X % i == 0) {
  20.             return 0;
  21.         }
  22.     }
  23.     return 1;
  24. }
  25.  
  26.  
  27.  
  28. int main(int argc, char **argv) {
  29.    
  30.     int err;
  31.     int id, np;
  32.    
  33.     err = MPI_Init(&argc, &argv);
  34.     MPI_Comm_rank(MPI_COMM_WORLD, &id);
  35.     MPI_Comm_size(MPI_COMM_WORLD, &np);
  36.    
  37.     int T = N / np;
  38.     int L = 1 +  id * T;
  39.     int R; 
  40.    
  41.     if (id != np - 1) {
  42.         R = T * (id + 1) + 1;      
  43.     } else {
  44.         R = N;
  45.     }
  46.    
  47.    
  48.     int *primes = (int*) malloc((T/2)*sizeof(int));;
  49.     int k = 0;
  50.     int i;
  51.    
  52.     for (i = L; i <= R; i++) {
  53.         if (isPrime(i)) {
  54.             primes[k++] = i;
  55.         }
  56.     }
  57.    
  58.     int max = 0;
  59.     int tren;
  60.    
  61.     for (i = 0; i < k-1; i++) {
  62.         tren = primes[i+1] - primes[i];
  63.         if (tren > max) {
  64.             max = tren;
  65.         }
  66.     }
  67.    
  68.    
  69.     int globalMax;
  70.    
  71.     MPI_Reduce(&max, &globalMax, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD);
  72.    
  73.     if (id == 0) {
  74.         printf("%d\n", globalMax);     
  75.     }
  76.    
  77.    
  78.     err = MPI_Finalize();
  79.    
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement