PCSI
TP MAPLE 9 : ALGORITHMES CLASSIQUES
1) Algorithme d’Euclide.
Il a été vu dans le TP8. Pouvez cette fois faire une version non récursive de la mise en œuvre
de cet algorithme ?
2) Algorithme de détermination de la primalité d’un naturel.
Rappeler pourquoi un entier n est premier ss’il ne possède aucun diviseur entre 2 et ………..
Écrire une procédure estpremier:=proc(n) qui aura la même fonction que isprime
Comparer les temps de calcul entre estpremier et isprime.
3) Algorithme de détermination de la liste des nombres premiers de 2 à n, dit algorithme du
crible d’Eratosthène.
Principe (essayer déjà sur feuille avec n = 50):
a) partir de la liste L des entiers de 2 à n.
b1) barrer dans cette liste tous les éléments qui sont multiples stricts du premier terme
b2) barrer dans la liste obtenue tous les éléments qui sont multiples stricts du
deuxième terme.
…
bk) barrer dans la liste obtenue tous les éléments qui sont multiples stricts du k-ième
terme.
c) s’arrêter lorsque le k-ième terme a un carré > n.
La liste L modifiée comporte alors tous les nombres premiers de 1 à n.
Écrire une procédure listePremiers:=proc(n) qui donne la liste des nombres
premiers de 1 à n.
Pour barrer dans la liste, vous utiliserez soit « minus » (il faudra alors convertir la liste en
ensemble par {op(L)}, soit « remove ».
4) Algorithme de décomposition d’un naturel dans une base.
Principe : si
2
0 1 2 0
.. ... b
N
NN
n a a b a b a b a a
,
est le reste de la division de n par b
et
21
1 1 2 3 1
.. ... b
N
NN
n a a b a b a b a a
est le quotient dans cette division.
Écrire une procédure (récursive ou non) dec:=proc(n,b) retournant la séquence des
chiffres de n dans la base b. Utiliser « iquo » et « irem ».
5) Algorithme d’exponentiation rapide.
a) Écrire une procédure expol:=proc(a,n) retournant an.
b) Principe de l’algorithme d’exponentiation rapide.
Il consiste à décomposer n en somme de puissances de 2 (autrement dit à écrire n en base 2)
et d’en déduire un calcul de an par une suite d’élévations au carré successives.
Par exemple
, donc
, sachant que
et
.
L’algorithme s’effectuera de la manière suivante :