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