kamilosxd678

[ROZPR7] Pierwsze

Apr 23rd, 2013
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <pthread.h>
  3. #include <math.h>
  4.  
  5. int zakres = 0;
  6. int ostatnia = 0;
  7. int ktosPobiera = 0;
  8.  
  9. void *f( void *i )
  10. {      
  11.     int* tab = (int*)i;
  12.     int liczba;
  13.     int pierwiastek;
  14.     int czyPierwsza;
  15.     int aktualna;
  16.     while(zakres > 0){
  17.         while(ktosPobiera);
  18.         ktosPobiera = 1;
  19.         liczba = ostatnia;
  20.         ostatnia = ostatnia + 2;
  21.         zakres--;
  22.         ktosPobiera = 0;
  23.         aktualna = 2;
  24.         czyPierwsza = 1;
  25.         pierwiastek = sqrt(liczba);
  26.         while(czyPierwsza && aktualna <= pierwiastek){
  27.             if(liczba%aktualna == 0)
  28.                 czyPierwsza = 0;
  29.             aktualna++;
  30.         }
  31.         if(czyPierwsza)
  32.             printf("(%d) %d jest liczba pierwsza\n",tab[0],liczba);
  33.         tab[1]++;
  34.     }
  35.     return NULL;
  36. }
  37. int main()
  38. {      
  39.     int tab[2];
  40.     int poczatek, koniec, ileWatkow;
  41.     int liczba[1000][2];
  42.     int i = 0;
  43.     printf("Podaj poczatek przedzialu ");
  44.     scanf("%d",&poczatek);
  45.     printf("Podaj koniec przedzialu ");
  46.     scanf("%d",&koniec);
  47.     printf("Podaj ilosc watkow ");
  48.     scanf("%d",&ileWatkow);
  49.     tab[0] = poczatek;
  50.     tab[1] = koniec;
  51.     zakres = (koniec - poczatek)/2;
  52.     ostatnia = poczatek;   
  53.     pthread_t w;
  54.     for(i = 0; i < ileWatkow; i++){
  55.         liczba[i][0] = i+1;
  56.         liczba[i][1] = 0;
  57.         pthread_create( &w, NULL, f, (void*)liczba[i] );
  58.     }
  59.     pthread_join( w, NULL );
  60.     for(i = 0; i < ileWatkow; i++){
  61.         printf("Watek %d dzialal dla %d liczb\n",liczba[i][0],liczba[i][1]);
  62.     }
  63.  
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment