Sie sind auf Seite 1von 3

Exercices - Algorithmes : enonce

Cette feuille dexercice recense quelques algorithmes trouves aux detours dun probl`eme.

Ecrire
des algorithmes
Exercice 1 - Renversant ! - L1/Math Sup/Master Enseignement - ??

Ecrire
une fonction qui prend en entree un entier naturel a et retourne cet entier ecrit `
a
lenvers. Par exemple, si a = 1234, la fonction devra retourner a = 4321. On pourra utiliser les
fonctions quotient(n,p) et reste(n,p) qui donnent le quotient et le reste de la division de n par
p.

Exercice 2 - Temps darr


et - L1/Master Enseignement - ?
P

On note Hn la somme Hn = nk=1 k1 . On admet que (Hn ) tend vers +. Ecrire


un algorithme
qui determine le plus petit entier n tel que Hn depasse un reel a donne.

Exercice 3 - Equation
de Pell-Fermat - Master Enseignement - ?

On consid`ere lequation x2 2y 2 = 1 dinconnues x, y N . Ecrire


un algorithme permettant
de determiner toutes les solutions de cette equation pour lesquelles y 100.

Exercice 4 - En base 2 - L1/Math Sup/Master Enseignement - ??

1. Ecrire
21 en base 2.
2. Proposer un algorithme qui prend en entree un entier n et retourne son ecriture en base
2.

Exercice 5 - Encadrement dint


egrale - L1/Math Sup/Master Enseignement - ??
Soit f : [0, 1] R une fonction croissante. Pour n 1, on pose
Un =

n
X
1 n1
1X
f (k/n) et Vn =
f (k/n).
n k=0
n k=1

1. Demontrer que, pour tout n 1, on a Un


2. On admet que (Un ) et (Vn ) convergent vers
R
2
valeur approchee de 01 ex dx `
a 103 pr`es.

R1
0

R1
0

f (x)dx Vn .

f (x)dx. Ecrire
un algorithme donnant une

Analyser des algorithmes


Exercice 6 - pgcd - Master Enseignement - ?
Lalgorithme suivant propose de calculer le pgcd de deux entiers a et b, avec a > b.
Fonctionne-t-il ? Sinon, corriger cet algorithme.
Lire a
Lire b
Tant que (b non nul) Faire
a=b
b=reste de a par b
Fin Tant que.
Afficher a.
http://www.bibmath.net

Exercices - Algorithmes : enonce


Exercice 7 - Marche al
eatoire - Master Enseignement - ?
Une puce se deplace sur un axe gradue. Au temps t = 0, la puce est en 0. Si la puce est
en x, `a linstant n + 1, elle est en x + 1 avec probabilite 1/3, en x + 2 avec probabilite 1/3, en
x 3 avec probabilite 1/3. On souhaite programmer un algorithme simulant la position de la
puce apr`es 50 iterations. On propose lalgorithme suivant :
x=0
Pour t allant de 1 `
a n Faire
Si (random()<1/3) alors x=x+1
Si (random()>=1/3) et (random()<2/3) alors x=x+1
Si (random()>=2/3) alors x=x-3
Fin Pour.
Afficher x.
Cet algorithme fonctionne-t-il ? Sinon, le corriger.
NB. La fonction random() retourne un nombre (pseudo)-aleatoire entre 0 et 1.

Exercice 8 - Triplets pythagoriciens - Master Enseignement - ??


Voici lenonce pose `
a des etudiants :
On rappelle quun triplet dentiers naturels (a, b, c) est un triplet pythagoricien si a2 + b2 = c2 .

Ecrire
un algorithme donnant tous les triplets pythagoriciens de sorte que a + b + c 10000.
Voici les reponses de quelques etudiants. Determiner les algorithmes qui donnent le bon resultat.
Expliquer.

Etudiant
1:
Pour k1 allant de 0 `
a 10000 faire
Pour k2 allant de 0 `
a 10000 faire
Pour k3 allant de 0 `
a 10000 faire
Si k12 + k22 = k32 et k1+k2+k3<=10000 alors afficher (k1,k2,k3)
Fin si
Fin pour
Fin pour
Fin pour.

Etudiant
2:
a=0, b=0,c=0
Pour b allant de 0 `
a 10000
a2 + b2 c.
Si a+b+sqrt(c)<10000 et sqrt(c) entier alors afficher (a,b,sqrt(c))
c=0;
a=a+1;
Fin Pour.

Etudiant
3:
a=0, b=0, c=0
Tant que a+b+c<=10000 faire
Tant que a+b+c<=10000 faire
afficher(a,b,c)
b=b+1
c=sqrt(a*a+b*b)
Fin tant que
a=a+1
http://www.bibmath.net

Exercices - Algorithmes : enonce


b=0
Fin tant que.

Etudiant
4:
Pour a allant de 0 `
a 10000 faire
Pour b allant de 0 `
a 10000-a faire
Pour c allant de 0 `
a 10000-a-b faire
Si a*a+b*b=c*c afficher (a,b,c) Fin si
Fin pour
Fin pour.
Fin pour.

Etudiant
5:
a=0, b=0
Tant que a+b+sqrt(a*a+b*b)<=10000 faire
b=0
Tant que a+b+sqrt(a*a+b*b)<=10000 faire
Si Ent(sqrt(a*a+b*b))=sqrt(a*a+b*b) alors afficher (a,b,sqrt(a*a+b*b))
Fin si
b=b+1
Fin tant que
a=a+1
Fin tant que.

Etudiant
6:
Pour a allant de 0 `
a 10000 faire
Pour b allant de 0 `
a 10000 faire
c=0
tant que a+b+c<=10000 faire
si a*a+b*b=c*c alors afficher (a,b,c)
sinon c=c+1
Fin tant que
Fin pour.
Fin pour.

http://www.bibmath.net

Das könnte Ihnen auch gefallen