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