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  
,
0
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
100= 4 + 32 + 64
, donc
100 4 32 64
..a a a a
, sachant que
 
2
2
2
32 4
aa



et
 
2
64 32
aa
.
L’algorithme s’effectuera de la manière suivante :
divisions
successives
100
25
impair
12
6
3
impair
1
impair
de n par 2
élévations
successives
de a au
carré
a
2
a
4
a
8
a
16
a
32
a
64
a
résultat
1
4
a
4
a
4
a
4 32 36
a a a
4 32 64 100
a a a a
Écrire une procédure (récursive, ou non) expor:=proc(a,n) retournant an et utilisant
cet algorithme.
Comparer les temps de calcul entre « expol » et « expor ».
c) Pour ceux qui connaissent les congruences : appliquer la méthode de
l’exponentiation rapide pour obtenir le reste de la division de
2002005
2
par 101.
6) La bonne vieille division.
Programmer une fonction f:=proc(a,b,k) qui retourne une liste formée de la partie
entière du quotient de a par b, puis les k premières décimales du quotient (par exemple,
f(22,7,5)=[3,1,4,2,8,5]) ; les seules fonctions autorisées sont
,,  
, iquo, et irem.
7) L’extraction de racines carrées.
Programmer une fonction f:=proc(n,k) qui retourne la liste formée de la partie entière du
quotient de la racine carrée de n, puis de ses k premières décimales ; les seules opérations
autorisées sont
,,  
.
8) Algorithme de division euclidienne des polynômes.
A et B étant donnés, déterminer Q et R.
Degré d’un polynôme : degree
Coefficient dominant d’un polynôme : lcoeff
9) Algorithme de Horner pour calculer les valeurs d’un polynôme.
Principe :
 
 
 
 
0 1 0 1 2 3 1
... .....
n
n n n
P x a a x a x a x a x a x a x a xa
   
Écrire une procédure horner:=proc(a,x,n) qui retourne
 
0
nk
ka k x
.
Comparer les temps de calcul avec un calcul normal (pour le test prendre
 
, 4, 100a k k x n  
).
9) Algorithme glouton pour la décomposition d’un rationnel > 0 en somme de fractions
égyptiennes.
Principe : retrancher la plus grande fraction égyptienne inférieure ou égale à x et
recommencer jusqu’à ce qu’on obtienne zéro.
Écrire une procédure glouton:=proc(x) qui retourne la liste des fractions égyptiennes
obtenues par cet algorithme ; leur somme doit être égale à x.
Exercice : démontrer que cet algorithme se termine toujours.
Autres algorithmes, pour mémoire :
- algorithme d’insertion pour le tri (cf. TP 8),
- algorithme de calcul approché d’une solution d’une équation par dichotomie.
- algorithme du pivot de Gauss pour la résolution d’un système linéaire.
-algorithme de Schmidt pour la détermination d’une base orthonormée.
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!