Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <pthread.h>
- #include <math.h>
- int zakres = 0;
- int ostatnia = 0;
- int ktosPobiera = 0;
- void *f( void *i )
- {
- int* tab = (int*)i;
- int liczba;
- int pierwiastek;
- int czyPierwsza;
- int aktualna;
- while(zakres > 0){
- while(ktosPobiera);
- ktosPobiera = 1;
- liczba = ostatnia;
- ostatnia = ostatnia + 2;
- zakres--;
- ktosPobiera = 0;
- aktualna = 2;
- czyPierwsza = 1;
- pierwiastek = sqrt(liczba);
- while(czyPierwsza && aktualna <= pierwiastek){
- if(liczba%aktualna == 0)
- czyPierwsza = 0;
- aktualna++;
- }
- if(czyPierwsza)
- printf("(%d) %d jest liczba pierwsza\n",tab[0],liczba);
- tab[1]++;
- }
- return NULL;
- }
- int main()
- {
- int tab[2];
- int poczatek, koniec, ileWatkow;
- int liczba[1000][2];
- int i = 0;
- printf("Podaj poczatek przedzialu ");
- scanf("%d",&poczatek);
- printf("Podaj koniec przedzialu ");
- scanf("%d",&koniec);
- printf("Podaj ilosc watkow ");
- scanf("%d",&ileWatkow);
- tab[0] = poczatek;
- tab[1] = koniec;
- zakres = (koniec - poczatek)/2;
- ostatnia = poczatek;
- pthread_t w;
- for(i = 0; i < ileWatkow; i++){
- liczba[i][0] = i+1;
- liczba[i][1] = 0;
- pthread_create( &w, NULL, f, (void*)liczba[i] );
- }
- pthread_join( w, NULL );
- for(i = 0; i < ileWatkow; i++){
- printf("Watek %d dzialal dla %d liczb\n",liczba[i][0],liczba[i][1]);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment