• Aucun résultat trouvé

A

N/A
N/A
Protected

Academic year: 2022

Partager "A"

Copied!
292
0
0

Texte intégral

(1)

Guillaume CONNAN

Versionlonguedisponibleàetteadresse

http://download.tuxfamily.org/tehessinmath/les%20pdf/PafAlgo.pdf

10 juin2009

(2)

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

(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

(4)

Cen'est pas trèsmathématique mais'estun algorithmeet pour aronter

touseux quinousattendent, ilva nous falloirdesfores....

(5)

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

(6)

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

(7)

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

(8)

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.

(9)

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.

(10)

En eet, derrièrel'algorithmevu enprimaire seahe eluidu produitdes

polynmes etfairelelien entreesdeux appliationsde et algorithme

néessiteune bonne ompréhension de lanumérationen base10.

(11)

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)

(12)

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)

(13)

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)

(14)

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)

(15)

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

(16)

4012*102

409224

f:=x >(4x^3+x+2)*(x^2+2):;

f(10)

(17)

4012*102

409224

f:=x >(4x^3+x+2)*(x^2+2):;

f(10)

409224

(18)

4012*102

409224

f:=x >(4x^3+x+2)*(x^2+2):;

f(10)

(19)

4012*102

409224

f:=x >(4x^3+x+2)*(x^2+2):;

f(10)

409224

(20)

4012*102

409224

f:=x >(4x^3+x+2)*(x^2+2):;

f(10)

(21)

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))))

}:;

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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.

(28)

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.

(29)

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;;

(30)

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

(31)

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;;

(32)

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

(33)

Deuxéoles de programmation :

programmationfontionnelle;

programmationimpérative.

(34)

Deuxéoles de programmation :

programmationfontionnelle;

programmationimpérative.

(35)

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);

}

(36)

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);

}

(37)

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

(38)

Certains onnaissentpeut-êtrelelangage Logo quiavaitpermisaux petits

éoliersd'ily aunevingtaine d'annéesde s'initieràlaprogrammation.

Voyonsparexemple unpetitalgorithmepermettantde traer unpolygone

fermé régulierquelonque.

(39)

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

(40)

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;

(41)

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;

}:;

(42)

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

(43)

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

(44)

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)

(45)

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

(46)

Ave XCAS

va(x):={

si x>0 alors

return(x) sinon

return( x)

fsi ;

}

(47)

en anglais :

va(x):={

if(x>0){return(x)}

else{return( x)}

}

(48)

en anglais :

va(x):={

if(x>0){return(x)}

else{return( x)}

}

(49)

en plusompat :

va(x):={

ifte(x>0,x, x)

}

(50)

Ave CAML

# let va(x) =

if x>0 then x else x ;;

(51)

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

(52)

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.

(53)

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.

(54)

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.

(55)

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)}

}

}:;

(56)

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

}:;

(57)

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.)

(58)

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.

(59)

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.

(60)

Algorithme impératif

Entrées:x(réel positif)

Initialisation:k 0

début

tant quek<=x faire

k k+1

retournerk-1

n

(61)

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 :

(62)

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

(63)

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 ;

}:;

(64)

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);

(65)

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

(66)

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

(67)

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

(68)

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

(69)

Tradution XCAS

arrondi(x):={

return(pe(100*x)/100.0)

}

(70)

Tradution CAML

let arrondi_au_100_eme_par_defaut (r)

=

partie_entiere (100. *. r) /. 100.

(71)

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

(72)

On veutparexemple alulerlasommedesentiers de 1à n.

(73)

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);;

(74)

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) =

(75)

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

(76)

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):={

(77)

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)

}

(78)

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):={

(79)

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

(80)

Les setionsSTG sontinitiéesàl'algorithmiqueen travaillant surdes

problèmessimplesde gestion.

(81)

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

(82)

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.

(83)

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.

(84)

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.

(85)

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

(86)

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;

(87)

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)

}

(88)

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

(89)

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.

(90)

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

(91)

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

(92)

Version réursive

reste(a,b) début

sia<b alors

retourner0

n

retourner1+quotient(a-b,b)

Algorithme 12:Quotient:versionréursive

(93)

Ave XCAS

quotient(a,b):={

if(a<b){return(0)};

return(1+quotient(a b,b));

}

(94)

Ave CAML

# let re quotient (a,b)

=

if a<b

then 0

else 1+quotient(a b,b) ;;

(95)

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:

# 37­37/5

* 5;;

ou utiliserlaommande inxée mod

# 37 mod 2 ;;

(96)

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:

(97)

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:

# 37­37/5

* 5;;

ou utiliserlaommande inxée mod

# 37 mod 2 ;;

(98)

Version impérative

Entrées:2 entiersaet b

début

Initialisation:k 0

tant quekb6afaire

k k+1

n

retournerk-1

(99)

Ave XCAS

quotient(a,b):={

loal k;

k:=0;

while(k*b<=a){k:=k+ 1 }

return(k 1)

}

(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

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

(101)

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)

(102)

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

(103)

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)

(104)

Ave XCAS

divise(p,n):={iquo(n,p)*p==n}:;

(105)

Ave CAML

# let divise p n = ((n/p)*p=n);;

Qui s'utiliseainsi :

# divise 4 13;;

: bool = false

# divise 4 12;;

: bool = true

(106)

Ave CAML

# let divise p n = ((n/p)*p=n);;

Qui s'utiliseainsi :

# divise 4 13;;

: bool = false

# divise 4 12;;

: bool = true

(107)

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

(108)

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))

(109)

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

(110)

Ave XCAS

PGCD1(a,b):={

if(b==0){return(a)}

else{return(PGCD1(b,irem(a,b)))}

}

(111)

Ave CAML

# let re pgd (a,b)

=

if b=0

then a

else pgd(b,a a/b*b);;

(112)

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

(113)

Ave XCAS

PGCD2(a,b):={

loal r;

while(b!=0){

r:=irem(a,b);

a:=b;

b:=r;

}

return(a)

}:;

(114)

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)

(115)

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

(116)

Ave XCAS

PGCD3(a,b):={

if(b==0){return(a)}

if(a>=b){return(PGCD3(b,a b))}

else{return(PGCD3(a,b a))}

}

(117)

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);;

(118)

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

(119)

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

(120)

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

(121)

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.

(122)

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

(123)

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.

(124)

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')

(125)

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.

(126)

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):;

(127)

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) ;;

(128)

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;

(129)

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);

}

(130)

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

(131)

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

=:::

(132)

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 :

(133)

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 ?? .

(134)

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℄

(135)

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℄

(136)

Ave CAML

# let re f (a,b)

=

if b = 0

then [℄

else a/b :: f(b,a a/b*b);;

(137)

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

(138)

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 ;

(139)

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

(140)

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

(141)

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

(142)

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")

};

(143)

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

(144)

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) =

(145)

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);;

(146)

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

(147)

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

(148)

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;

(149)

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.

(150)

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");

(151)

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);;

(152)

On peut aneren enlevant les multiplesde 3.

(153)

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

(154)

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;

(155)

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));

}:;

(156)

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);;

(157)

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℄

(158)

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);;

Références

Documents relatifs

Le ompilateur doit traduire un programme soure, érit dans un langage de programmation.. donné, en un

Registres ahés.- Un registre est un élément mémoire inlus dans le miroproesseur..

Langage mahine.- Uun sous-programme peut se trouver dans le même segment que le programme. qui l'appelle : la valeur du registre IP est alors hangée mais il est inutile de

de la routine de servie de l'interruption se trouve à l'adresse 4 × n pour le type n : les deux otets de IP se trouvent à l'adresse 4 × n et les deux otets de CS à l'adresse 4 × n +

les nombres plus petit que le nombre pivot sont à gauhe de

Wenn dagegen verlangt wird, dass ein System von drei (lurch einen Punkt gehenden zu einander senkrechten ganz unendlichen geraden Linien, deren Reihenfolge

steht: elementltren~ lies:

Die anonym elnzureichendeu Bewerbungsschriften sind in deutscher, lateinischer oder franzb'sischer Sprache zu verfassen~ miissen deutlich geschrieben und pagi~irt,