diff --git a/Makefile b/Makefile
index 021a54b0f64f3ac985a57f0a36b9b3154801077c..4d99fd57e00b8d81f41c8418d08e692d4a3bfa8e 100644
--- a/Makefile
+++ b/Makefile
@@ -13,7 +13,10 @@ test.o : test.c run.h
 
 
 clean :
-	rm -rf *.o
+	rm -rf *.o 
 
 mrproper: clean
 	rm -rf run
+
+prog : run
+		./run
\ No newline at end of file
diff --git a/README.md b/README.md
index f83bbedbff9ce010eaa4272a90a7d3fdb83283f5..f92c83c96540130c742e5e39e74515e7924c8f50 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
 # lepl1503-2020-groupe-M2
 
+Pour compiler et exécuter (tester) le programme : make prog mrproper
diff --git a/run.c b/run.c
index 3f8fa053e2edc6e4c32f64cdd7b062c89a95c97b..6a73e604287ca0232ad156d36173c20c483a7a0b 100644
--- a/run.c
+++ b/run.c
@@ -18,64 +18,72 @@ int is_prime(int number) { // Vérifie si number est un nombre premier. Return 1
     return 1 ; //sinon => VRAI
 }
 
-int* prime_divs(int number){
+typedef struct node{
+    int value;
+    struct node *next;
+}node_t;
 
-    int *ptr;
-    ptr = malloc(sizeof(int)*number);
-    ptr[0] = 0;
-    ptr[1] = 0;
+typedef struct queue{
+    struct node *tail;
+    int size;
+}queue_t;
 
-    int i;
-    int len = 0;
+int enqueue(queue_t* q, int val){
 
-    for (i = 2; i < number; i++){
-        if (is_prime(i) == 1 && is_div(number, i)){
-			ptr[i] = i;
-            len++;
-        }
-        else
-        {
-            ptr[i] = 0;
-        }
+    struct node new_node;
+    new_node.value = val;
 
-    }
-    ptr[i] = -1;
-    int *result;
-    result = malloc(sizeof(int)*len +sizeof(int));
-    int j =0;
-    for (int i = 0; ptr[i] != -1; i++)
+    struct node *ptr;
+    ptr = malloc(sizeof(node_t));
+    if (ptr == NULL){return -1;}
+    *ptr = new_node;
+
+    if (q->size == 0)
     {
-        if(ptr[i] != 0){
-            result[j] = ptr[i];
-            j++;
-        }
-        
+        *q->tail = *ptr;
+        *ptr->next = *ptr;
     }
-    result[j] = -1;
-    //free(ptr);
-    return result;
-
+    else{
+        *ptr->next = *q->tail->next;
+        *q->tail->next = *ptr;
+    }
+    q->size++;
+    return 0;
+    
 }
 
-void afficherListe(int* tab) { // afficher la liste
 
-    for (int i = 0; tab[i] != -1; i++)
-    {
-        if (tab[i] != 0){
-        printf("%d\n",tab[i]);
+queue_t* prime_divs(int number){
 
-        }
-    }
+    struct queue new_queue;
+    new_queue.size = 0;
+
+    struct queue *ptr;
+    ptr = malloc(sizeof(queue_t));
+    if (ptr == NULL){return NULL;}
+    *ptr = new_queue;
 
+   for (int i = 2; i < number; i++){
+        if (is_prime(i) == 1 && is_div(number, i)){
+            int err = enqueue(ptr,i);
+            if (err == -1){return NULL;}
+
+        }  
+   }
+   int err1 = enqueue(ptr,-1);
+   if (err1 == -1){return NULL;} 
+
+   return ptr;
 
 }
 
+
 int run (char *input,char *output){
 
     FILE *file1 = NULL;
     FILE *file2 = NULL;
 
-    char chaine[50];
+    //char chaine[50];
 
     file1 = fopen(input,"r");
     if (file1 == NULL){return -1;}
@@ -86,9 +94,9 @@ int run (char *input,char *output){
         return -1;
     }
 
-    while (fgets(chaine,50,file1) != NULL){
+    /* while (fgets(chaine,50,file1) != NULL){
 
-        int *pr_divs = prime_divs(atoi(chaine));
+        queue_t *pr_divs = prime_divs(atoi(chaine));
         fprintf(file2,"%s ",chaine);
         for (int i = 0; pr_divs[i] != -1; i++)
         {
@@ -96,7 +104,7 @@ int run (char *input,char *output){
         }
         fputc('\n',file2);
         
-    }
+    } */
 
     fclose(file1);
     fclose(file2);
diff --git a/run.h b/run.h
index 7cd407e4356ea7398c37349e4871c152bd3383c9..f3159ba04c2aafdc33e186f590acb8511d6b3caa 100644
--- a/run.h
+++ b/run.h
@@ -3,8 +3,17 @@
 
 int is_div(int number, int i);
 int is_prime(int number);
-int* prime_divs(int number);
-void afficherListe(int* tab);
+typedef struct node{
+    int value;
+    struct node *next;
+}node_t;
+typedef struct queue{
+    struct node *tail;
+    int size;
+}queue_t;
+int enqueue(queue_t* q, int val);
+queue_t* prime_divs(int number);
+
 int run (char *input,char *output);
 
 #endif
\ No newline at end of file