Guest User

Untitled

a guest
Nov 28th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. #include <pthread.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <stdbool.h>
  5.  
  6.  
  7.  
  8.  
  9. bool isPrime(void *arg);
  10. void* isPrimeThread(void* arg);
  11.  
  12. int main(int argc, char *argv[]){
  13. /*
  14. pthread_t watek[5];
  15. int liczba[5]={1,13,17,25,144}; //podaje
  16.  
  17.  
  18. bool wynik;
  19.  
  20. for(int i=0;i<5;i++){
  21. pthread_create(&watek[i], NULL,isPrimeThread, &liczba[i]); //watek, NULL , do jakiej funkcji , argument funkcji
  22. }
  23. for(int i=0;i<5;i++){
  24.  
  25. pthread_join(watek[i],(void**)&wynik);
  26. printf("%d liczba pierwsza %d.\n", liczba[i], wynik);
  27.  
  28. }
  29. */
  30.  
  31. pthread_t *watek = calloc(argc, sizeof(pthread_t));
  32. int *liczba = calloc(argc, sizeof(int));
  33. bool wynik;
  34.  
  35. for(int i=1;i<argc;i++){
  36. int temp = atoi(argv[i]);
  37. pthread_create(&watek[i], NULL,(void *)isPrimeThread, (void *)&temp); //watek, NULL , do jakiej funkcji , argument funkcji
  38. }
  39.  
  40. for(int i=1;i<argc;i++){
  41.  
  42. pthread_join(watek[i],(void**)&wynik);
  43. printf("liczba pierwsza %d \n", wynik);
  44. }
  45. return EXIT_SUCCESS;
  46.  
  47. }
  48.  
  49.  
  50.  
  51.  
  52. void* isPrimeThread(void* arg){
  53.  
  54. bool* ret;
  55. ret = (bool*) malloc(sizeof(bool));
  56. ret = (bool*)isPrime(arg);
  57. pthread_exit(ret);
  58. }
  59.  
  60. bool isPrime(void *ptr)
  61. {
  62. int liczba = *((int *)ptr);
  63. if(liczba<2)
  64. return false; //gdy liczba jest mniejsza niṡ 2 to nie jest pierwszṗ
  65.  
  66. for(int i=2;i*i<=liczba;i++)
  67. if(liczba%i==0)
  68. return false; //gdy znajdziemy dzielnik, to dana liczba nie jest pierwsza
  69.  
  70. return true;
  71.  
  72. }
Advertisement
Add Comment
Please, Sign In to add comment