Vous êtes sur la page 1sur 2

` linformatique

Initiation a
III. Calculs, Algorithmes et Complexit
e

Universite de Provence
Licence Sciences et Technologies & PEI
Annee 2011-2012

Exercice III.1 (Echauffements)


1. On consid`ere la fonction f : N N definie par :

3 x + 1 si x est impair,
x N, f (x) =
x/2
si x est pair.
Cette fonction intervient dans une conjecture cel`ebre appelee conjecture de Syracuse.
Donner un algorithme qui, etant donne un nombre naturel x, donne la valeur de f (x).
2. On consid`ere `
a present la fonction de deux variables g : N N Z definie par :

1 si m < n,
1 si m > n,
(m, n) N N, g(m, n) =

0 sinon.
Donner un algorithme qui, etant donnes deux nombres naturels m et n, donne la valeur de
g(m, n).
Exercice III.2 (Resolution dune equation du second degre)
On consid`ere une equation du second degre, donnee par les trois coefficients reels a, b et c :
a x2 + b x + c = 0

(1)

1. Donner un algorithme qui, etant donne trois coefficients reels a, b et c, donne lensemble des
solutions reelles de lequation du second degre (1) associee.
2. Donner les operations elementaires quil utilise et leur nombre.
Algorithme 1 Premier(entier n)
Entr
ee : Un entier naturel n
Sortie : true si n est premier, false sinon.
1: Si n = 0 ou n = 1 Alors
2:
Retourner false
3: Fin Si
4: Si n = 2 Alors
5:
Retourner true
6: Fin Si
7: p = 2

8: Tant Que p 6 n et p ne divise pas n Faire


9:
p=p+1
10: Fin Tant Que
11: Si p divise n Alors
/* On a trouve un diviseur de n */
12:
Retourner false

13: Sinon
/* On sait que n na pas de diviseur inferieur ou egal `a n */
14:
Retourner true
15: Fin Si

Exercice III.3 (Test de primalite)


Nous avons vu en cours lalgorithme 1 qui permet de determiner si un nombre est premier ou non.
1

1. Executer cet algorithme sur les entree 19, 25, 39 et 143.


2. En utilisant Premier comme operation elementaire, ecrire un algorithme Affiche Premiers
permettant, etant donne un entier naturel n, dafficher tous les nombres premier inferieurs
a n.
`
Exercice III.4 Pour chacun des probl`emes suivants, donner un algorithme permettant de le
resoudre, puis lister les operations elementaires quil utilise et donner leur nombre.
(i) Affichage des nombres pairs de 0 `a 20.
(ii) Calcul du pgcd de deux nombres entiers naturels n et m.
(iii) Calcul du n-`eme nombre premier.

Algorithme 2 Factorielle(entier n)
Entr
ee : Un entier naturel n > 0
Sortie : Calcule la factorielle de n
1: Si n = 1 Alors
2:
Retourner 1
3: Sinon
4:
Retourner n Factorielle(n 1)
5: Fin Si

Exercice III.5 (Recursivite)


Il est possible, au sein dun algorithme, de faire appel `a cet algorithme sur une entree de taille plus
petite. Ce procede est appele la recursivite. Lalgorithme 2 illustre cette technique pour le calcul
de la factorielle
1. Executer cet algorithme sur les entrees 4 et 5.
2. Donner un algorithme recursif pour le calcul de la somme S(n) =

n
X

i.

i=0

Exercice III.6 (Probl`eme de larret)


1. Montrer que tous les programmes peuvent etre vus comme des mots finis sur lalphabet
{0, 1}.
2. Considerons un programme prog. Une question naturelle sur ce programme est de savoir,
etant donnee une entree input, si lexecution de prog sur input sarrete ou non (cest-`a-dire
boucle infiniment).
Nous supposons quil existe un programme, intitule Stop, qui etant donne en entree un
programme prog et une entree input de ce programme, retourne 1 si lexecution de prog sur
input sarrete, et retourne 0 sinon :

1 si prog(input) termine
Stop(prog, input) =
0 sinon.
Ecrire un algorithme Fou qui, etant donne en entree un mot prog decrivant un programme,
boucle inifiniment si ce programme sarrete sur lentree prog, et sarrete sinon.
3. Considerer lexecution du programme Fou sur lui-meme. Conclure que le programme Stop ne
peut pas exister. Ceci demontre quil nexiste pas dalgorithme capable de determiner, pour
nimporte quel programme, si celui-ci sarrete ou non.

Vous aimerez peut-être aussi