Guillaume CONNAN
Versionlonguedisponibleàetteadresse
http://download.tuxfamily.org/tehessinmath/les%20pdf/PafAlgo.pdf
10 juin2009
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
Cen'est pas trèsmathématique mais'estun algorithmeet pour aronter
touseux quinousattendent, ilva nous falloirdesfores....
Entrées:massemtotale
Initialisation:;
beurre m/4;
sure m/4;
farine m/4;
÷uf m/4;
début
Couperlebeurreenpetitsmoreauxetlemettreàfondredouementaubain-mariede
préférene.Dèsqu'ilestfonduarrêter.Laisserrefroidirmaisattention:lebeurredoitêtre
enoreliquide!Ilnedoitpasredevenirsolide;
Mettrelefouràpréhauerà160°(th5);
Mettrelesoeufsentiersavelesuredansunsaladier.Battrelonguementlemélangepourqu'il
blanhisseetdeviennebienmousseux;
YajouterlebeurrefonduETFROID;
Rajouterprogressivementàl'appareillafarineenl'inoporantbien.Celadoitdonnerunepâte
élastiqueetunpeuépaisse;
Verserlapréparationdansunmouleàmanquéouàakebienbeurré;
Laisseruireenvironuneheure.Ilfautsurveillerlegâteaurégulièrement.;
si ilsemblebrunirtropvitealors
ilfautbaisserunpeulefouretmettreunefeuilled'aluminiumsurledessus.
Ilfautqueledessusdugâteausoitblondfoné,maispastropoloré.;
silorsqu'unepiqueplantéeensonmilieuressortsèhealors
legâteauestuit
n
Algorithme 1:algorithmebreton pur beurre
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
Les enfantsapprennent àl'éoleprimaireàposer vertialementune
multipliationd'entier:ilsutilisentundesnombreux algorithmes utilisésà
traversles sièleset les ontinentspour eetuere typede alul.
Celui-i nousintéresse ar'estune premièreversiond'un algorithmeplus
général surle multipliationdes polynmes etmême desfrations
rationnelles.
Les enfantsapprennent àl'éoleprimaireàposer vertialementune
multipliationd'entier:ilsutilisentundesnombreux algorithmes utilisésà
traversles sièleset les ontinentspour eetuere typede alul.
Celui-i nousintéresse ar'estune premièreversiond'un algorithmeplus
général surle multipliationdes polynmes etmême desfrations
rationnelles.
En eet, derrièrel'algorithmevu enprimaire seahe eluidu produitdes
polynmes etfairelelien entreesdeux appliationsde et algorithme
néessiteune bonne ompréhension de lanumérationen base10.
4 0 1 2
1 0 2
8 0 2 4
4 0 1 2
4 0 9 2 2 4
410 3
+10+2
(10 2
+2)=(810 3
+210+4)+(410 5
+10 3
+210)
4X 3
+X+2
(X 2
+2)=(8X 3
+2X +4)+(4X 5
+X 3
+2X)
et même
1031;7=317kX(3X +1+ 7
X
=3X 2
+X+7)
4 0 1 2
1 0 2
8 0 2 4
4 0 1 2
4 0 9 2 2 4
410 3
+10+2
(10 2
+2)=(810 3
+210+4)+(410 5
+10 3
+210)
4X 3
+X+2
(X 2
+2)=(8X 3
+2X +4)+(4X 5
+X 3
+2X)
4 0 1 2
1 0 2
8 0 2 4
4 0 1 2
4 0 9 2 2 4
410 3
+10+2
(10 2
+2)=(810 3
+210+4)+(410 5
+10 3
+210)
4X 3
+X+2
(X 2
+2)=(8X 3
+2X +4)+(4X 5
+X 3
+2X)
et même
1031;7=317kX(3X +1+ 7
X
=3X 2
+X+7)
4 0 1 2
1 0 2
8 0 2 4
4 0 1 2
4 0 9 2 2 4
410 3
+10+2
(10 2
+2)=(810 3
+210+4)+(410 5
+10 3
+210)
4X 3
+X+2
(X 2
+2)=(8X 3
+2X +4)+(4X 5
+X 3
+2X)
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
4012*102
409224
f:=x >(4x^3+x+2)*(x^2+2):;
f(10)
4012*102
409224
f:=x >(4x^3+x+2)*(x^2+2):;
f(10)
409224
4012*102
409224
f:=x >(4x^3+x+2)*(x^2+2):;
f(10)
4012*102
409224
f:=x >(4x^3+x+2)*(x^2+2):;
f(10)
409224
4012*102
409224
f:=x >(4x^3+x+2)*(x^2+2):;
f(10)
produit(N,M,var):={
loal PN,PM,Pro,k;
PN:=0;PM:=0;
for(k:=0;k<size(N);k++){
PN:= PN+N[k℄*X^(size(N) 1 k)
}
for(k:=0;k<size(M);k++){
PM:=PM+M[k℄*X^(size(M) 1 k)
}
Pro:=X >PM*PN;
return(simplify(expand(Pro(var))))
}:;
produit([4,0,1 ,2℄,[1,0,2℄,10)
409224
produit([4 ,0,1,2℄,[1,0,2℄,x)
4x 5
+9x 3
+2x 2
+2x+4
produit([4,0,1 ,2℄,[1,0,2℄,10)
409224
produit([4 ,0,1,2℄,[1,0,2℄,x)
4x 5
+9x 3
+2x 2
+2x+4
produit([4,0,1 ,2℄,[1,0,2℄,10)
409224
produit([4 ,0,1,2℄,[1,0,2℄,x)
4x 5
+9x 3
+2x 2
+2x+4
produit([4,0,1 ,2℄,[1,0,2℄,10)
409224
produit([4 ,0,1,2℄,[1,0,2℄,x)
4x 5
+9x 3
+2x 2
+2x+4
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
Larelationu
n +1
=3u
n
+2 valablepour toutentier natureln et ladonnée
de u
0
=5onstituent unalgorithmede alulréursifde touttermede la
suite(u
n ).
Sa tradutiondansdes langages sahant plusou moinstraiter de tels
algorithmesest direte.
Larelationu
n +1
=3u
n
+2 valablepour toutentier natureln et ladonnée
de u
0
=5onstituent unalgorithmede alulréursifde touttermede la
suite(u
n ).
Sa tradutiondansdes langages sahant plusou moinstraiter de tels
algorithmesest direte.
Parexemple, en XCASela devient :
u(n,uo):={
if(n==0){return(uo)}
else{3*u(n 1,uo)+ 2 }
}
et en CAML:
# let re u(n,uo)=
if n=0 then uo
else 3*u(n 1,uo)+2;;
Parexemple, en XCASela devient :
u(n,uo):={
if(n==0){return(uo)}
else{3*u(n 1,uo)+ 2 }
}
et en CAML:
# let re u(n,uo)=
if n=0 then uo
Parexemple, en XCASela devient :
u(n,uo):={
if(n==0){return(uo)}
else{3*u(n 1,uo)+ 2 }
}
et en CAML:
# let re u(n,uo)=
if n=0 then uo
else 3*u(n 1,uo)+2;;
Parexemple, en XCASela devient :
u(n,uo):={
if(n==0){return(uo)}
else{3*u(n 1,uo)+ 2 }
}
et en CAML:
# let re u(n,uo)=
if n=0 then uo
Deuxéoles de programmation :
programmationfontionnelle;
programmationimpérative.
Deuxéoles de programmation :
programmationfontionnelle;
programmationimpérative.
Cela donne en XCAS :
u_imp(n,uo):={
loal k,temp;
temp:=uo;
for(k:=1;k<=n;k:=k+1){
temp:=3*temp+2;
}
return(temp);
}
Cela donne en XCAS :
u_imp(n,uo):={
loal k,temp;
temp:=uo;
for(k:=1;k<=n;k:=k+1){
temp:=3*temp+2;
}
return(temp);
}
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
Certains onnaissentpeut-êtrelelangage Logo quiavaitpermisaux petits
éoliersd'ily aunevingtaine d'annéesde s'initieràlaprogrammation.
Voyonsparexemple unpetitalgorithmepermettantde traer unpolygone
fermé régulierquelonque.
Entrées:nombre Nde tés etlongueura d'unté
début
pour k de 1jusqu'à N faire
avanede apas;
tourne de 360/adegrés;
n
Algorithme2 :polygone
Ave XCAS
XCAS omprend unmoduleTortue trèsomplet:
polylogo(N,a):={
loal k;
pour k de 1 jusque N faire
avane(a);
tourne_droite(360/N);
fpour;
Ave XCAS
XCAS omprend unmoduleTortue trèsomplet:
polylogo(N,a):={
loal k;
pour k de 1 jusque N faire
avane(a);
tourne_droite(360/N);
fpour;
}:;
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
Algorithme
On peut dénirlavaleur absolued'un réelx de lamanièresuivante,même
si e n'estpas l'usageen seonde:
Entrées:x(unréel)
début
six positif alors
retournerx
sinon
retourner(-x)
Algorithme
On peut dénirlavaleur absolued'un réelx de lamanièresuivante,même
si e n'estpas l'usageen seonde:
Entrées:x(unréel)
début
six positif alors
retournerx
sinon
retourner(-x)
n
Algorithme4 :valeurabsolue
Ave XCAS
va(x):={
si x>0 alors
return(x) sinon
return( x)
fsi ;
}
en anglais :
va(x):={
if(x>0){return(x)}
else{return( x)}
}
en anglais :
va(x):={
if(x>0){return(x)}
else{return( x)}
}
en plusompat :
va(x):={
ifte(x>0,x, x)
}
Ave CAML
# let va(x) =
if x>0 then x else x ;;
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
Algorithme réursif
On partdufaitquelapartie entièred'un nombre appartenant à[0;1[ est
nulle.
Ensuite, ondesenddex vers0 parpas de 1sile nombreestpositifen
montant quebx=1+bx 1.
Si lenombre estnégatif,on montevers 0 en montrantque
bx= 1+bx+1.
Algorithme réursif
On partdufaitquelapartie entièred'un nombre appartenant à[0;1[ est
nulle.
Ensuite, ondesenddex vers0 parpas de 1sile nombreestpositifen
montant quebx=1+bx 1.
Si lenombre estnégatif,on montevers 0 en montrantque
bx= 1+bx+1.
Algorithme réursif
On partdufaitquelapartie entièred'un nombre appartenant à[0;1[ est
nulle.
Ensuite, ondesenddex vers0 parpas de 1sile nombreestpositifen
montant quebx=1+bx 1.
Si lenombre estnégatif,on montevers 0 en montrantque
bx= 1+bx+1.
Ave XCAS
partie_entiere_re(r):={
si(r>=0) et (r<1)
alors 0
sinon si r>0
alors 1+partie_entiere_re(r 1)
sinon 1+partie_entiere_re(r+1)
fsi
fsi
}:;
partie_entiere_re(r):={
if ((r>=0) and (r<1)){0}
else{if(r>0){ 1 +partie_entiere_re(r 1)}
else{ 1+partie_entiere_re(r+1)}
}
}:;
Ave XCAS
partie_entiere_re(r):={
si(r>=0) et (r<1)
alors 0
sinon si r>0
alors 1+partie_entiere_re(r 1)
sinon 1+partie_entiere_re(r+1)
fsi
fsi
}:;
Ave CAML
# let re partie_entiere (r)
=
if r >= 0. && r < 1.
then 0.
else if r > 0.
then 1. +. partie_entiere (r .
1.)
else .1. +. partie_entiere (r +. 1.)
Algorithme impératif
Test si...alors...sinon etbouletant que
On peut ommenerparserestreindre aux nombrespositifs.On part de 0.
Tantqu'on n'apasdépassé x,on avaned'un pas. Laboule s'arrêtedès
que k est stritement supérieuràx.Lapartieentière vautdon k 1.
Algorithme impératif
Test si...alors...sinon etbouletant que
On peut ommenerparse restreindre aux nombrespositifs.On part de 0.
Tantqu'on n'apasdépassé x,on avaned'un pas. Laboule s'arrêtedès
que k est stritement supérieuràx.Lapartieentière vautdon k 1.
Algorithme impératif
Entrées:x(réel positif)
Initialisation:k 0
début
tant quek<=x faire
k k+1
retournerk-1
n
Algorithme impératif
Dans leas d'un réelnégatif,ilfaut ette foisreulerd'un pasà haque
tour de boule etlapartieentièreest lapremièrevaleur de k à être
inférieure àx :
Algorithme impératif
Entrées:x(réel)
Initialisation:k 0
début
six >0 alors
tant quek<=x faire
k k+1
retournerk-1
sinon
tant quek>x faire
Algorithme impératif ave XCAS
pe(x):={
loal k;
k:=0;
si x>=0 alors
tantque k<=x faire
k:=k+1;
ftantque;
return(k 1);
sinon
tantque k>x faire
k:=k 1;
ftantque;
return(k);
fsi ;
}:;
En anglais:
pe(x):={
loal k;
k:=0;
if(x>=0){
while(k<=x){k:=k+1};
return(k 1);
}
else{
while(k>x){k:=k 1};
return(k);
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
On veutarrondirun nombreréelà10 2
prèspardéfaut.
On va prendre lapartieentière(ave l'algorithmeréé préédemment) du
nombre multipliépar10 2
puislerediviser par 10 2
:
Entrées:x(réel)
début
retourner(partieentière de 100x) divisée par100
n
Algorithme 7:arrondi
On veutarrondirun nombreréelà10 2
prèspardéfaut.
On va prendre lapartieentière(ave l'algorithmeréé préédemment) du
nombre multipliépar10 2
puislerediviser par 10 2
:
Entrées:x(réel)
début
retourner(partieentière de 100x) divisée par100
n
Algorithme 8:arrondi
On veutarrondirun nombreréelà10 2
prèspardéfaut.
On va prendre lapartieentière(ave l'algorithmeréé préédemment) du
nombre multipliépar10 2
puislerediviser par 10 2
:
Entrées:x(réel)
début
retourner(partieentière de 100x) divisée par100
n
Algorithme 9:arrondi
Tradution XCAS
arrondi(x):={
return(pe(100*x)/100.0)
}
Tradution CAML
let arrondi_au_100_eme_par_defaut (r)
=
partie_entiere (100. *. r) /. 100.
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
On veutparexemple alulerlasommedesentiers de 1à n.
Algorithme réursif
En XCAS :
som_ent(n):={
if(n==0){0}
else{n+som_ent(n 1)}
}:;
En CAML:
# let re som_ent(n) =
if n=0 then 0
else n+som_ent(n 1);;
Algorithme réursif
En XCAS :
som_ent(n):={
if(n==0){0}
else{n+som_ent(n 1)}
}:;
En CAML:
# let re som_ent(n) =
Algorithme impératif
Entrées:n(entier naturel)
Initialisation:S 0; // la somme est nulle au départ
début
pour k de 1à n faire
S S+k
retournerS
n
Algorithme 10:sommedesentiers de 1à n
Tradution XCAS
som(n):={
loal S;
S:=0;
pour k de 1 jusque n faire
S:=S+k;
fpour;
return(S)
}
en anglais :
som(n):={
som(n):={
loal S;
S:=0;
pour k de 1 jusque n faire
S:=S+k;
fpour;
return(S)
}
en anglais :
som(n):={
loal S;
S:=0;
for(k:=1;k<=n;k++) {S:=S+k};
return(S)
}
Tradution XCAS
som(n):={
loal S;
S:=0;
pour k de 1 jusque n faire
S:=S+k;
fpour;
return(S)
}
en anglais :
som(n):={
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
Les setionsSTG sontinitiéesàl'algorithmiqueen travaillant surdes
problèmessimplesde gestion.
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
On entre unmontant HTht.On eetueuneremisesur ht selonlarégle
suivante :
siht <2500¿alorsiln'y apas de remise;
si2500 6ht <4000¿ alorslaremise estde 5%;
dansles autresas laremiseest de 8%.
LaTVAest de 19,6%.On demande leprixTTCen fontiondu prix HT.
On entre unmontant HTht.On eetueuneremisesur ht selonlarégle
suivante :
siht <2500¿alorsiln'y apas de remise;
si2500 6ht <4000¿ alorslaremise estde 5%;
dansles autresas laremiseest de 8%.
LaTVAest de 19,6%.On demande leprixTTCen fontiondu prix HT.
On entre unmontant HTht.On eetueuneremisesur ht selonlarégle
suivante :
siht <2500¿alorsiln'y apas de remise;
si2500 6ht <4000¿ alorslaremise estde 5%;
dansles autresas laremiseest de 8%.
LaTVAest de 19,6%.On demande leprixTTCen fontiondu prix HT.
Algorithme
Entrées:HT(réelpositif)
Initialisation:ht HT
début
siht>=2500 etht<4000 alors
ht ht0,95
siht>=4000 alors
ht ht0,92
retournerht1:196
n
Algorithme 11:prixTTCselonremise
XCAS
remise(HT):={
loal ht;
ht:=HT;
si (ht>=2500) et (ht<4000) alors ht:=ht*0.95; fsi ;
si ht> = 4 0 0 0 alors ht:=ht*0.92; fsi ;
return(ht*1.196)
}
remise(HT):={
loal ht;
XCAS
remise(HT):={
loal ht;
ht:=HT;
si (ht>=2500) et (ht<4000) alors ht:=ht*0.95; fsi ;
si ht> = 4 0 0 0 alors ht:=ht*0.92; fsi ;
return(ht*1.196)
}
remise(HT):={
loal ht;
ht:=HT;
if( (ht>=2500) and (ht<4000)){ht:=ht*0.95};
if(ht>=4000){ht:=ht*0.92};
return(ht*1.196)
}
CAML
let prix_tt_apres_remise (prix_hors_taxe)
=
let
taux_remise = if prix_hors_taxe < 2500.
then 0.
else if prix_hors_taxe < 4000.
then 0.05
else 0.08
in
CAML
let prix_tt_apres_remise (prix_hors_taxe)
=
let
taux_remise = if prix_hors_taxe < 2500.
then 0.
else if prix_hors_taxe < 4000.
then 0.05
else 0.08
in
(1. . taux_remise) *. prix_hors_taxe *.
1.196
On remarque aupassage ommentdénirunefontion loale imbriquée
dansune autrefontion.
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
Version réursive
reste(a,b) début
sia<b alors
retourner0
n
retourner1+quotient(a-b,b)
Algorithme 12:Quotient:versionréursive
Ave XCAS
quotient(a,b):={
if(a<b){return(0)};
return(1+quotient(a b,b));
}
Ave CAML
# let re quotient (a,b)
=
if a<b
then 0
else 1+quotient(a b,b) ;;
Remarque
CAML étantintelligemmenttypé,sion entre :
# 37/5;;
On obtient
: int = 7
'est-à-direpardéfaut lequotient entieraron travailleavedes entiers.
Pour avoiruneapproximation déimale,ilfaut entrer:
# 37./.5.;;
et on obtient:
: float = 7.4
Pour lereste,on peut donentrer:
# 3737/5
* 5;;
ou utiliserlaommande inxée mod
# 37 mod 2 ;;
Remarque
CAML étantintelligemmenttypé,sion entre :
# 37/5;;
On obtient
: int = 7
'est-à-direpardéfaut lequotient entieraron travailleavedes entiers.
Pour avoiruneapproximation déimale,ilfaut entrer:
# 37./.5.;;
et on obtient:
: float = 7.4
Pour lereste,on peut donentrer:
Remarque
CAML étantintelligemmenttypé,sion entre :
# 37/5;;
On obtient
: int = 7
'est-à-direpardéfaut lequotient entieraron travailleavedes entiers.
Pour avoiruneapproximation déimale,ilfaut entrer:
# 37./.5.;;
et on obtient:
: float = 7.4
Pour lereste,on peut donentrer:
# 3737/5
* 5;;
ou utiliserlaommande inxée mod
# 37 mod 2 ;;
Version impérative
Entrées:2 entiersaet b
début
Initialisation:k 0
tant quekb6afaire
k k+1
n
retournerk-1
Ave XCAS
quotient(a,b):={
loal k;
k:=0;
while(k*b<=a){k:=k+ 1 }
return(k 1)
}
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
On peut réerunefontion quitestera siunnombre diviseunautre.
Entrées:2 entiersn et p
début
(quotient entiern/p)p == n
n
Algorithme 14:Testde divisibilité
On eetueuntest booléenen utilisant l'opérateurinxe ==quidésigne la
relationd'égalité. Laréponseduprogrammesera donvrai ou
faux (1ou 0sur XCAS ettrueou false surCAML)
On peut réerunefontion quitestera siunnombre diviseunautre.
Entrées:2 entiersn et p
début
(quotient entiern/p)p == n
n
Algorithme 15:Testde divisibilité
On eetueuntest booléenen utilisant l'opérateurinxe ==quidésigne la
relationd'égalité. Laréponseduprogrammesera donvrai ou
On peut réerunefontion quitestera siunnombre diviseunautre.
Entrées:2 entiersn et p
début
(quotient entiern/p)p == n
n
Algorithme 16:Testde divisibilité
On eetueuntest booléenen utilisant l'opérateurinxe ==quidésigne la
relationd'égalité. Laréponseduprogrammesera donvrai ou
faux (1ou 0sur XCAS ettrueou false surCAML)
Ave XCAS
divise(p,n):={iquo(n,p)*p==n}:;
Ave CAML
# let divise p n = ((n/p)*p=n);;
Qui s'utiliseainsi :
# divise 4 13;;
: bool = false
# divise 4 12;;
: bool = true
Ave CAML
# let divise p n = ((n/p)*p=n);;
Qui s'utiliseainsi :
# divise 4 13;;
: bool = false
# divise 4 12;;
: bool = true
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
Nous allonsvoir plusieursalgorithmes pouraluler lePGCD de deux
entiers.
Le plusnaturelest laversionréursivede l'algorithmed'Eulide :
PGCD1(a,b)Entrées:2 entiersa etb
début
sib=0 alors
retournera
sinon
retournerPGCD1(b,reste(a,b))
Nous allonsvoir plusieursalgorithmes pouraluler lePGCD de deux
entiers.
Le plusnaturelest laversionréursivede l'algorithmed'Eulide :
PGCD1(a,b)Entrées:2 entiersa etb
début
sib=0 alors
retournera
sinon
retournerPGCD1(b,reste(a,b))
n
Algorithme 18:Version réursivede l'algorithmed'Eulide
Ave XCAS
PGCD1(a,b):={
if(b==0){return(a)}
else{return(PGCD1(b,irem(a,b)))}
}
Ave CAML
# let re pgd (a,b)
=
if b=0
then a
else pgd(b,a a/b*b);;
Version impérative
En versionimpérative,'est unpeu pluslong etmoinsnaturel;-)
Entrées:2 entiersaet b
début
tant queb6=0 faire
r reste(a,b);
a b;
b r;
n
Ave XCAS
PGCD2(a,b):={
loal r;
while(b!=0){
r:=irem(a,b);
a:=b;
b:=r;
}
return(a)
}:;
Algorithme des diérenes
On peut égalementutiliserlefaitque a^b=a^(b a )=a^(a b),
mais'est plus(beauoup trop) long...Uneidéede reherhe peut être de
omparer les deuxalgorithmes.
PGCD3(a,b)Entrées:2 entiersa etb
début
sib=0 alors
retournera
sia>=b alors
retournerPGCD3(b,a-b)
Algorithme des diérenes
On peut égalementutiliserlefaitque a^b=a^(b a )=a^(a b),
mais'est plus(beauoup trop) long...Uneidéede reherhe peut être de
omparer les deuxalgorithmes.
PGCD3(a,b)Entrées:2 entiersa etb
début
sib=0 alors
retournera
sia>=b alors
retournerPGCD3(b,a-b)
sinon
retournerPGCD3(a,b-a)
n
Algorithme21:PGCDparl'algorithmedesdiérenesen version
réursive
Ave XCAS
PGCD3(a,b):={
if(b==0){return(a)}
if(a>=b){return(PGCD3(b,a b))}
else{return(PGCD3(a,b a))}
}
Ave CAML
let re pgdif (a,b)
=
if b=0
then a
else if a>b
then pgdif(b,a b)
else pgdif(a,b a);;
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
Petitrappelsur et algorithmequipermetde prouver lethéorème de
Bézout et d'obtenirdes oeients vériantau+bv =a^b :
k u
k
v
k
r
k
q
k
0 1 0 r
0
=a /
1 0 1 r
1
=b q
1
2 u
0 u
1 q
1 v
0 v
1 q
1 r
2
=r
0 r
1 q
1 q
2
3 u
1 u
2 q
2 v
1 v
2 q
2 r
3
=r
1 r
2 q
2 q
3
.
.
.
.
.
.
.
.
.
p 1 r
p 1
=a^b q
p 1
p r
p
=0
Petitrappelsur et algorithmequipermetde prouver lethéorème de
Bézout et d'obtenirdes oeients vériantau+bv =a^b :
k u
k
v
k
r
k
q
k
0 1 0 r
0
=a /
1 0 1 r
1
=b q
1
2 u
0 u
1 q
1 v
0 v
1 q
1 r
2
=r
0 r
1 q
1 q
2
3 u
1 u
2 q
2 v
1 v
2 q
2 r
3
=r
1 r
2 q
2 q
3
.
.
.
.
.
.
.
.
.
p 1 r
p 1
=a^b q
p 1
Parexemple, pour 19et 15 :
k u
k
v
k
r
k
q
k
0 1 0 19 / L
0
1 0 1 15 1 L
1
2 1 1 4 3 L
2 L
0
1 L
1
3 3 4 3 1 L
3 L
1
3L
2
4 u =4 v = 5 19^15=1 3 L
4 L
2
1L
3
5 0 L
5 L
3
3L
4
C'est-à-dire 419 515=1 et19^15=1.
Parexemple, pour 19et 15 :
k u
k
v
k
r
k
q
k
0 1 0 19 / L
0
1 0 1 15 1 L
1
2 1 1 4 3 L
2 L
0
1 L
1
3 3 4 3 1 L
3 L
1
3L
2
4 u =4 v = 5 19^15=1 3 L
4 L
2
1L
3
5 0 L
5 L
3
3L
4
Parexemple, pour 19et 15 :
k u
k
v
k
r
k
q
k
0 1 0 19 / L
0
1 0 1 15 1 L
1
2 1 1 4 3 L
2 L
0
1 L
1
3 3 4 3 1 L
3 L
1
3L
2
4 u =4 v = 5 19^15=1 3 L
4 L
2
1L
3
5 0 L
5 L
3
3L
4
C'est-à-dire 419 515=1 et19^15=1.
Version réursive
En versionréursive, onpeut proéder en deux étapes:
aee(u,v,r,u',v',r');
Entrées:6 entiersu, v,r,u', v', r'
début
sir'=0 alors
retourner([u,v,r℄)
sinon
aee(u',v',r',u-quotient(r,r')u',v-quotient(r,r')v',r-
quotient(r,r')r')
Ave XCAS
aee(u,v,r,u',v',r'):={
if(r'==0){return ([u,v,r℄)};
aee(u',v',r',u iquo(r,r')*u',v iquo(r,r ')*v',r
iquo(r,r')*r')
}:;
AEE(a,b):=aee(1,0,a,0,1,b):;
Parexemple, AEE(19,15)renvoie[4,5,1℄e quisignie que
419 515=1et que19^15=1.
Ave XCAS
aee(u,v,r,u',v',r'):={
if(r'==0){return ([u,v,r℄)};
aee(u',v',r',u iquo(r,r')*u',v iquo(r,r ')*v',r
iquo(r,r')*r')
}:;
AEE(a,b):=aee(1,0,a,0,1,b):;
Ave CAML
# let re aee(u,v,r,u',v',r ')
=
if r'=0
then [u;v;r℄
else aee(u',v',r',u r/r'*u',v r/r'*v',r r/r'*r')
;;
# let aet(a,b)
= aee(1,0,a,0,1,b) ;;
Version impérative
Entrées:2 entiersaet b
Initialisation: liste a (1,0,a);
listeb (0,1,b);
reste b;
début
tant quereste6=0 faire
q quotient(3 e
opérande de liste a, reste);
listetemp liste a-qlisteb;
listea listeb;
Ave XCAS
bezout(a,b):={
loal la ,lb ,lr ,q,reste;
la:=[1,0,a℄;
lb:=[0,1,b℄;
reste:=b;
while (reste !=0){
q:=quotient(la[2℄, reste);
lr:=la+( q)*lb;
la:=lb;
lb:=lr;
reste:=lb [2℄;
}
return(la);
}
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
Vousonnaissez l'algorithmesuivant:
172 = 351+19 (1)
51 = 219+13 (2)
19 = 113+6 (3)
13 = 26+1 (4)
6 = 61+0 (5)
On peut donfailementompléter lasuited'égalitésuivante :
172
51
=3+ 19
51
=3+ 1
51
19
=3+ 1
2+ 13
19
=:::
Vousonnaissez l'algorithmesuivant:
172 = 351+19 (1)
51 = 219+13 (2)
19 = 113+6 (3)
13 = 26+1 (4)
6 = 61+0 (5)
On peut donfailementompléter lasuited'égalitésuivante :
Algorithme réursif
On supposeonnus les algorithmesdonnant le resteet lequotientd'une
division eulidienne.
f(a,b) début
sib=0 alors
retournerliste vide
;
n
Retour[quotient(a,b),f(b,reste(a,b))℄
Algorithme 24 :frationsontinues:versionréursive
L'algorithmeréiproque seraétudiéplusloin ?? .
Ave XCAS
f(a,b):={
if(b==0){return ([℄) };
return(onat(iquo(a,b) ,f(b,irem(a,b))))
}:;
Alorsf(172,51)renvoie [3,2,1,2,6℄
Ave XCAS
f(a,b):={
if(b==0){return ([℄) };
return(onat(iquo(a,b) ,f(b,irem(a,b))))
}:;
Alorsf(172,51)renvoie [3,2,1,2,6℄
Ave CAML
# let re f (a,b)
=
if b = 0
then [℄
else a/b :: f(b,a a/b*b);;
Algorithme impératif
Entrées:2 entiersaet b
Initialisation: num a;
den b;
res reste(num,den);
Liste vide;
début
tant queres6=0 faire
Liste Liste,quotient(num,den);
num den;
den res;
res reste(num,den);
n
retourner[Liste,quotient(num,den)℄
Algorithme25 :Frations ontinues:versionimpérative
Ave XCAS
fra_ont(a,b):={
loal num,den ,res ,Liste;
num:=a;
den:=b;
res:=remain(num,den);
Liste:=NULL;
while(res>0){
Liste:=Liste ,iquo(num,den);
num:=den;
den:=res ;
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
Première version
Entrées:unentier n
début
pour k de 2jusque partieentière de p
n faire
sireste de ladivisionde n parkest nul alors
retournern n'est paspremier
retournern est premier
n
Ave XCAS
testPrem1(n):={
loal k;
pour k de 2 jusque floor(sqrt(n)) faire
si irem(n,k)==0 alors return(n+" n'est pas
premier");
fsi ;
fpour;
return(n+" est premier");
}:;
testPrem1(n):={
loal k;
for(k:=2;k<=floor(sqrt(n));k++) {
if(irem(n,k)==0){return(n+" n'est pas premier")
};
};
return(n+" est premier");
}:;
Cependant, ilfautparfois êtrepatient :testPrem1(2^(10000)+1)a
mis près de 10 minutesavant derépondre quee nombre n'étaitpas
(IREMdesPaysdelaLoire) Atelier 95/193
Ave XCAS
testPrem1(n):={
loal k;
pour k de 2 jusque floor(sqrt(n)) faire
si irem(n,k)==0 alors return(n+" n'est pas
premier");
fsi ;
fpour;
return(n+" est premier");
}:;
testPrem1(n):={
loal k;
for(k:=2;k<=floor(sqrt(n));k++) {
if(irem(n,k)==0){return(n+" n'est pas premier")
};
Ave XCAS
testPrem1(n):={
loal k;
pour k de 2 jusque floor(sqrt(n)) faire
si irem(n,k)==0 alors return(n+" n'est pas
premier");
fsi ;
fpour;
return(n+" est premier");
}:;
testPrem1(n):={
loal k;
for(k:=2;k<=floor(sqrt(n));k++) {
if(irem(n,k)==0){return(n+" n'est pas premier")
};
};
return(n+" est premier");
}:;
Cependant, ilfautparfois êtrepatient :testPrem1(2^(10000)+1)a
mis près de 10 minutesavant derépondre quee nombre n'étaitpas
(IREMdesPaysdelaLoire) Atelier 95/193
Ave CAML
# let test_naif n =
let re test_loal(m,k)=
if m*m>k then "premier"
else if k/m*m =k then "ompose"
else test_loal( m+1,k)
in test_loal(2,n);;
On noteau passageommentutiliserunefontion loalement àl'intérieur
d'uneautre. On aurait putoutaussibienles érireséparément :
# let re test_loal(m,k) =
Ave CAML
# let test_naif n =
let re test_loal(m,k)=
if m*m>k then "premier"
else if k/m*m =k then "ompose"
else test_loal( m+1,k)
in test_loal(2,n);;
On noteau passageommentutiliserunefontion loalement àl'intérieur
d'uneautre. On aurait putoutaussibienles érireséparément :
# let re test_loal(m,k) =
if m*m>k then "premier"
else if k/m*m =k then "ompose"
else test_loal( m+1,k);;
# let test_naif n = test_loal(2,n);;
Deuxième version
Unepremièrepossibilitépourdiviserlenombre de testspar2 est de vérier
au départsile nombreest pair.Dans le asontraire, on peut fairedes
sautsde 2 àpartir de 3:
Entrées:unentier n
début
sin est pair alors
retournern n'est paspremier
pour k de 2jusque partieentière de p
n aveunpas de 2
faire
sireste de ladivisionde n parkest nul alors
Deuxième version
Unepremièrepossibilitépourdiviserlenombre de testspar2 est de vérier
au départsile nombreest pair.Dans le asontraire, on peut fairedes
sautsde 2 àpartir de 3:
Entrées:unentier n
début
sin est pair alors
retournern n'est paspremier
pour k de 2jusque partieentière de p
n aveunpas de 2
faire
sireste de ladivisionde n parkest nul alors
retournern n'est paspremier
retournern est premier
n
Algorithme 28:test de primalité 2
Ave XCAS
testPrem1(n):={
loal k;
si irem(n,2)==0 alors return(n+ " n'est pas
premier"); fsi ;
pour k de 3 jusque floor(sqrt(n)) pas 2 faire
si irem(n,k)==0 alors return(n+" n'est pas
premier");
fsi ;
fpour;
Ave XCAS en anglais
testPrem1(n):={
loal k;
if(irem(n,2)==0){return(n+ " n'est pas premier")
};
for(k:=3; k<=floor(sqrt(n));k:=k+2){
if(irem(n,k)==0){return(n+" n'est pas premier
")};
};
return(n+" est premier");
}:;
Plusque291 seondes...On abiendiviséletempsdeompilation pardeux.
Ave XCAS en anglais
testPrem1(n):={
loal k;
if(irem(n,2)==0){return(n+ " n'est pas premier")
};
for(k:=3; k<=floor(sqrt(n));k:=k+2){
if(irem(n,k)==0){return(n+" n'est pas premier
")};
};
return(n+" est premier");
Ave CAML
# let test_naif_2 n =
let re test_loal(m,k)=
if k/2*2=k then "pair"
else
if m*m>k then "premier"
else if k/m*m =k then "ompose"
else test_loal( m+2,k)
in test_loal(3,n);;
On peut aneren enlevant les multiplesde 3.
Sommaire
1
Algorithmebreton
2
Unalgorithmeàtraverslasolarité
Sansl'ordinateur
Avel'ordinateur
3
Algorithmesréursifs/impératifs
4
Dismonsieur,dessine-moiuniosagone..
5
Outilsmathématiquesbasiques
Valeurabsolue
Partieentière
Arrondis
Calulsdesommes
6
AlgorithmesdealulsàlaSTG
Tauxderemisevariable
7
Algorithmesenarithmétique
Quotienteulidien
Divisibilité
PGCD
Algorithmed'Eulideétendu
Frationsontinues
Testsdeprimalité
Cribled'Ératosthène
Nombredehiresd'unentier
Déompositionenbase2
8
Opérationsavedesfrations
Dénitionsdesopérations
Frationsontinues:leretour
9
Algorithmesdealulplusomplexes
AlgorithmedeHörner
Exponentiationrapide
10
Algorithmesenanalyse
Reherhedeminimum
Dihotomie
Méthodedesretangles
11
SystèmesdeCramer
12
AlgorithmedeHéron
13
Algorithmesenprobabilité
Pileoufae
Tiragedeboules
ProblèmeduDudeTosane
14
Lanersd'unepièeetrésultatségaux
15
FloondeVonKoh
Version impérative ave XCAS
erato(n):={
loal j ,k,P;
P:=[seq(k,k=1..n) ℄;
P[0℄:=0;
pour j de 2 jusque floor(sqrt(n)) faire
si P[j 1℄>=1 alors
pour k de 2 jusque floor(n/j) faire
P[j*k 1℄:=0;
fpour;
En anglais
erato(n):={
loal j ,k,P;
P:=[seq(k,k=1..n) ℄;
P[0℄:=0;
for(j:=2;j<=floor(sqrt(n));j++) {
if(P[j 1℄>=1){
for(k:=2;k<=floor(n/j);k++) {
P[j*k 1℄:=0;
};
};
};
return(selet(x >( x>=1),P));
}:;
Ave CAML
En CAML,laréursion peutse faireen étapespour plusde lisibilité.
On fabrique unefontionquirenvoieunintervalleentier dontonaentré les
bornes :
# let re inter(a,b) = if a>b then [℄ else a::
inter(a+1,b) ;;
Ainsi :
# inter(2,12);;
Ave CAML
En CAML,laréursion peutse faireen étapespour plusde lisibilité.
On fabrique unefontionquirenvoieunintervalleentier dontonaentré les
bornes :
# let re inter(a,b) = if a>b then [℄ else a::
inter(a+1,b) ;;
Ainsi :
# inter(2,12);;
: int list = [2; 3; 4; 5; 6; 7; 8; 9; 10; 11;
12℄
Ave CAML
En CAML,laréursion peutse faireen étapespour plusde lisibilité.
On fabrique unefontionquirenvoieunintervalleentier dontonaentré les
bornes :
# let re inter(a,b) = if a>b then [℄ else a::
inter(a+1,b) ;;
Ainsi :
# inter(2,12);;