diff --git a/Code_With_Threads/fonctions.c b/Code_With_Threads/fonctions.c index 42df69f456de6e45594fc58f7da8c7017ba94727..a9a3368f69408973e95de0214bd1ff7d69172b0c 100644 --- a/Code_With_Threads/fonctions.c +++ b/Code_With_Threads/fonctions.c @@ -2,6 +2,7 @@ #include <stdio.h> #include <stdbool.h> #include <unistd.h> +#include <stdint.h> #include <pthread.h> #include <semaphore.h> @@ -33,7 +34,7 @@ Ajoute un node_t à la fin d'une list_t @my_list : la list_t a laquelle on va ajouter un node_t @value : la valeur que contiendra le node_t */ -void put_node_t(list_t *my_list, int value) { +void put_node_t(list_t *my_list, uint64_t value) { node_t *new = malloc(sizeof(node_t)); if (!new) return; new->next = NULL; @@ -73,7 +74,7 @@ Retire le premier node_t d'une list_t et renvoit son entier @my_list : la list_t de laquelle on va retier le node_t pointé par first @return : la valeur (int) que contenait le node_t retiré */ -int get_node_t(list_t *my_list) { +uint64_t get_node_t(list_t *my_list) { if (my_list->length == 0) return -1; int value = my_list->first->value; node_t *temp = my_list->first; @@ -120,23 +121,24 @@ Renvoie une list_t contenant un nombre suivi de ses diviseurs premiers @value : le nombre (int) dont on veut trouver les diviseurs premiers @return : une list_t contenant value dans le node_t pointé par first ainsi que ses diviseurs premiers */ -list_t *prime_list(int value) { +list_t *prime_list(uint64_t value) { list_t *prime = malloc(sizeof(list_t)); if (!prime) return NULL; init_list_t(prime); put_node_t(prime, value); - - int in_node = 0; - int chiffre = value; - while (value % 2 == 0) { - if (2 != in_node) { - put_node_t(prime, 2); - in_node = 2; + uint64_t in_node = 0; + uint64_t chiffre = value; + uint64_t div = 2; + + while (value % div == 0) { + if (div != in_node && value != div) { + put_node_t(prime, div); + in_node = div; } - value = value/2; + value = value/div; } - for (int i = 3; i*i <= value; i += 2) { + for (uint64_t i = 3; i*i <= value; i += 2) { while (value % i == 0) { if (i != in_node) { put_node_t(prime, i); @@ -230,4 +232,17 @@ buffer2 *init_buffer_2(int nthreads) { printf ("buffer_2 created.\n"); return buffer_2; +} + + + +int count_lines(char *filename){ + uint64_t number; + int lines = 0; + FILE *file = fopen(filename, "r"); + while (fscanf(file, "%lu", &number) != EOF) { + lines++; + } + fclose(file); + return lines; } \ No newline at end of file