diff --git a/README.md b/README.md
index 8d3b946e2b3617f1ec094be92c532b28227852be..6fc406017f0302b75bc1ecf3a9b33c6eb5c824e9 100644
--- a/README.md
+++ b/README.md
@@ -1,57 +1,69 @@
-# lepl1503-2020-groupe-M2
+# Projet LEPL1503 - Prime factorization
 
-Pour compiler le programme : make fact
+"Prime factorization" est un programme écrit en langage C. Il prend en entrée un fichier texte de nombres et renvoie un nouveau fichier texte avec, à chaque ligne, le nombre à factoriser et la liste de ses diviseurs premiers. Le programme fonctionne en "muli-threading" et le nombre de threads est paramétrable.
 
-Pour exécuter le fichier exécutable "fact" : ./fact [-N nombre_de_threads] input output
+## Installation
 
-Pour compiler et tester (suite de tests unitaires) le programme : make test 
+Les packages suivants doivent être installés :
 
-Pour compiler et effectuer une analyse avec "Valgrind" : make val
+* [CUnit](https://sites.uclouvain.be/SystInfo/notes/Outils/html/cunit.html) 
+* Valgrind : sudo apt-get install valgrind
+* Cppcheck : sudo apt-get install cppcheck
 
-Pour compiler, et obtenir le rapport d'analyse .xml de "Valgrind" : make val_xml
+## Utilisation
 
-Pour effectuer une analyse avec "cppcheck" : make cpp
+* Pour compiler le programme : make fact
 
-Pour compiler et obtenir le rapport d'analyse .xml  de "cppcheck" : make cpp_xml
+* Pour exécuter le fichier exécutable "fact" : ./fact [-N nombre_de_threads] input output
 
-Pour nettoyer les fichiers auxiliaires générés et l'exécutable : make clean
+* Pour compiler et tester (suite de tests unitaires) le programme : make test 
 
+* Pour compiler et effectuer une analyse avec "Valgrind" : make val
 
-Architecture du programme:
+* Pour compiler, et obtenir le rapport d'analyse .xml de "Valgrind" : make val_xml
+
+* Pour effectuer une analyse avec "cppcheck" : make cpp
+
+* Pour compiler et obtenir le rapport d'analyse .xml  de "cppcheck" : make cpp_xml
+
+* Pour nettoyer les fichiers auxiliaires générés et l'exécutable : make clean
+
+
+## Architecture du programme:
 
 Le travail est décomposé en 3 sections coordonnées via un double problème du producteur-consommateur :
 
-    -> 1 thread s'occupe de:
-                                § lire le fichier input 
-                                
-                                § stocker chacune des lignes sous forme de chaine de charactère dans un 1er tableau
+* 1 thread s'occupe de:
+                                * lire le fichier input 
+
+                                * stocker chacune des lignes sous forme de chaine de charactère dans un 1er tableau
 
-    -> N threads s'occupent de :
-                                § récupérer les chaines de caractères dans le premier tableau
+* N threads s'occupent de :
+                                * récupérer les chaines de caractères dans le premier tableau
 
-                                § les convertir en 'unsigned long long' et calculer leur liste de    diviseurs premiers
+                                * les convertir en 'unsigned long long' et calculer leur liste de    diviseurs premiers
 
-                                § Stocker ces listes dans un 2e tableau
+                                * Stocker ces listes dans un 2e tableau
     
-    -> 1 thread s'occupe de :
-                                § récupérer les listes de diviseurs dans le 2e tableau
+* 1 thread s'occupe de :
+                                * récupérer les listes de diviseurs dans le 2e tableau
 
-                                § Retranscrire dans le bon format le nombre à factoriser et ses      diviseurs premiers dans le fichier output
+                                * Retranscrire dans le bon format le nombre à factoriser et ses      diviseurs premiers dans le fichier output
 
 Note : 
-        § Les accès aux tableaux sont coordonnés par des mutex (1 par tableau) et des sémaphores
+        * Les accès aux tableaux sont coordonnés par des mutex (1 par tableau) et des sémaphores
 
-        § Les diviseurs premiers d'un même nombre sont stockés dans une circular linked list
+        * Les diviseurs premiers d'un même nombre sont stockés dans une circular linked list
 
 
-Architecture des tests :
+## Architecture des tests :
 
 6 tests sont réalisés afin de tester:
 
-                                § La fonction is_div
-                                § La fonction is_prime (2 tests)
-                                § Le fonctionnement complet pour un fichier vide (N = 4)
-                                § Le fonctionnement complet pour un fichier d'une ligne : check du   format et des diviseurs (N = 4)
-                                § Le fonctionnement complet pour un fichier de 100 lignes : check    du nombre de lignes (réalisé avec N = 4 puis N = 1)
+                                * La fonction is_div
+                                * La fonction is_prime (2 tests)
+                                * Le fonctionnement complet pour un fichier vide (N = 4)
+                                * Le fonctionnement complet pour un fichier d'une ligne : check du   format et des diviseurs (N = 4)
+                                * Le fonctionnement complet pour un fichier de 100 lignes : check    du nombre de lignes (réalisé avec N = 4 puis N = 1)
 
 # lepl1503-2020-groupe-M2
\ No newline at end of file