Ajout de polynomstene
This commit is contained in:
parent
465d4fb179
commit
671c213b23
@ -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
82
Test.ml
@ -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);;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user