SHARE
TWEET

Untitled

a guest Apr 22nd, 2019 81 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.     Marly da Cruz Cláudio 8936885
  3.     Danilo Marques Araujo dos Santos 8598670
  4. */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <omp.h>
  9.  
  10. int main(int argc, char **argv) {
  11.     int i, j, soma;
  12.     int quant_num_perfeitos = 0; //Armazenada a quantidade de números perfeitos encontrados
  13.     int num_perfeitos[10]; //Vetor para armazenar os números perfeitos
  14.     int intervalo = atoi(argv[1]); //Lê o intervalo a ser buscado do terminal
  15.  
  16.     /*  
  17.         Escolhemos o escalonamento guiado pois cada iteração do loop aumentara gradualmente
  18.         a sua carga de trabalho, e a diferenca entre a carga de trabalho entre as ultimas
  19.         iteracoes e as do comeco e muito grande, assim, se a gente fosse usar o dinamico,
  20.         o ideal seria pegar um chunk de tamanho 1, mas ai o overhead seria grande.
  21.  
  22.         Colocamos a regiao critica como sendo o for mais interno  pois pode dar
  23.         problema caso as threads executem essa parte do codigo ao mesmo tempo.
  24.     */
  25.  
  26.  
  27.     #pragma omp parallel private(soma) num_threads(4)
  28.     {
  29.         #pragma omp for schedule(guided, 2)
  30.             for(i = 1; i < intervalo; i++) {
  31.                 soma = 0;
  32.                 #pragma omp critical
  33.                     for(j = 1; j < i; j++) {
  34.                         if(i%j == 0) {
  35.                             soma += j;
  36.                         }
  37.                     }
  38.                 if(soma == i) {
  39.                     num_perfeitos[quant_num_perfeitos] = i;
  40.                     quant_num_perfeitos++;
  41.                 }
  42.             }
  43.     }
  44.  
  45.     for(i = 0; i < quant_num_perfeitos; i++) {
  46.         printf("%d ", num_perfeitos[i]);
  47.     }
  48.  
  49.     return 0;
  50. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top