Ajout de polynomstene

This commit is contained in:
Mysaa 2021-06-10 16:42:58 +02:00
parent 465d4fb179
commit 671c213b23
2 changed files with 96 additions and 1 deletions

View File

@ -17,6 +17,9 @@
\usepackage{bashful} \usepackage{bashful}
\usepackage{pdfpages}
\theorembodyfont{\upshape} \theorembodyfont{\upshape}
@ -66,10 +69,20 @@
\fi\fi \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}} \author{\lequel{Dylan THEVENET}{Samy AVRILLON}{Victor BELLOT}}
\title{Étude des codes correcteur d'erreurs} \title{Étude des codes correcteur d'erreurs}
\begin{document} \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 \maketitle
\hsep \hsep

82
Test.ml
View File

@ -189,6 +189,7 @@ pols clz tble;;
(* Essayons de générer une table d'addition *) (* Essayons de générer une table d'addition *)
(* ABORT MISSION *)
(**** Utilitaires ****) (**** Utilitaires ****)
@ -414,3 +415,84 @@ print_string "Temps écoulé: ";
print_float ((Sys.time ()) -. t0); print_float ((Sys.time ()) -. t0);
print_endline "." print_endline "."
done;; 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);;