Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <pthread.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- bool isPrime(void *arg);
- void* isPrimeThread(void* arg);
- int main(int argc, char *argv[]){
- /*
- pthread_t watek[5];
- int liczba[5]={1,13,17,25,144}; //podaje
- bool wynik;
- for(int i=0;i<5;i++){
- pthread_create(&watek[i], NULL,isPrimeThread, &liczba[i]); //watek, NULL , do jakiej funkcji , argument funkcji
- }
- for(int i=0;i<5;i++){
- pthread_join(watek[i],(void**)&wynik);
- printf("%d liczba pierwsza %d.\n", liczba[i], wynik);
- }
- */
- pthread_t *watek = calloc(argc, sizeof(pthread_t));
- int *liczba = calloc(argc, sizeof(int));
- bool wynik;
- for(int i=1;i<argc;i++){
- int temp = atoi(argv[i]);
- pthread_create(&watek[i], NULL,(void *)isPrimeThread, (void *)&temp); //watek, NULL , do jakiej funkcji , argument funkcji
- }
- for(int i=1;i<argc;i++){
- pthread_join(watek[i],(void**)&wynik);
- printf("liczba pierwsza %d \n", wynik);
- }
- return EXIT_SUCCESS;
- }
- void* isPrimeThread(void* arg){
- bool* ret;
- ret = (bool*) malloc(sizeof(bool));
- ret = (bool*)isPrime(arg);
- pthread_exit(ret);
- }
- bool isPrime(void *ptr)
- {
- int liczba = *((int *)ptr);
- if(liczba<2)
- return false; //gdy liczba jest mniejsza niṡ 2 to nie jest pierwszṗ
- for(int i=2;i*i<=liczba;i++)
- if(liczba%i==0)
- return false; //gdy znajdziemy dzielnik, to dana liczba nie jest pierwsza
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment