diff --git a/CompteRendu/CompteRendu.tex b/CompteRendu/CompteRendu.tex index 0fe8cf4..6b8b974 100644 --- a/CompteRendu/CompteRendu.tex +++ b/CompteRendu/CompteRendu.tex @@ -17,6 +17,9 @@ \usepackage{bashful} +\usepackage{pdfpages} + + \theorembodyfont{\upshape} @@ -66,10 +69,20 @@ \fi\fi } +%\usepackage[pdfauthor={\lequel{Dylan THEVENET}{Samy AVRILLON}{Victor BELLOT}}, pdftitle={Compte rendu du TIPE 2021}, pdftex]{hyperref} + + \author{\lequel{Dylan THEVENET}{Samy AVRILLON}{Victor BELLOT}} \title{Étude des codes correcteur d'erreurs} \begin{document} - + + \lequel{ + \includepdf[pages=-,linktodoc=false]{PageDeGarde-THEVENET.pdf} + }{ + \includepdf[pages=-,linktodoc=false]{PageDeGarde-AVRILLON.pdf} + }{ + \includepdf[pages=-,linktodoc=false]{PageDeGarde-BELLOT.pdf} + } \maketitle \hsep diff --git a/Test.ml b/Test.ml index 1a749f9..6a3e424 100644 --- a/Test.ml +++ b/Test.ml @@ -189,6 +189,7 @@ pols clz tble;; (* Essayons de générer une table d'addition *) +(* ABORT MISSION *) (**** Utilitaires ****) @@ -414,3 +415,84 @@ print_string "Temps écoulé: "; print_float ((Sys.time ()) -. t0); print_endline "." done;; + +(**** CRIBLE DE POLYNOMSTENE ****) + +let polynomstene pp : polynome list= + let n=degre pp in + let irrs = Array.make (1 lsl (n+1)) true in (* irrs.(p)=true si p est irréductible *) + let p = ref pp in (* Le «gros» polynome va diminuer *) + (* Marque les multiples de q comme non irréductibles, si leur degré est inferieur à celui de p*) + let annuleMultiples q p = + let t = ref 2 in (* On commence par multiplier par X *) + let r = ref (polmul !t q) in + while !r < p + do + irrs.(!r) <- false; + incr t; + r := polmul !t q + done + in + + let q = ref 2 in + let divs = ref [] in + + while (!p<>1) + do + if irrs.(!q) + then begin + annuleMultiples !q !p; + let (d0,r0) = poldiveuc !p !q in + let d = ref d0 and r = ref r0 in + while (!r=0) + do (* q divise p *) + divs := !q::!divs; + p := !d; + let (d0,r0) = poldiveuc !p !q in + d := d0; + r := r0 + done + end; + incr q + done; + !divs;; + +let naifostene pp = + let p = ref pp in (* Le «gros» polynome va diminuer *) + let q = ref 2 in + let divs = ref [] in + + while (!p<>1) + do + let (d0,r0) = poldiveuc !p !q in + let d = ref d0 and r = ref r0 in + while (!r=0) + do (* q divise p *) + divs := !q::!divs; + p := !d; + let (d0,r0) = poldiveuc !p !q in + d := d0; + r := r0 + done; + incr q + done; + !divs;; + +let pol = (1 lsl 61) lxor 1;; +print_polynome pol;; +let lst = naifostene pol;; +List.iter (function p -> print_polynome p) lst;; + +print_polynome (List.fold_left polmul 1 lst);; + + + + + + + + + + + + \ No newline at end of file