Initiation `
a l’informatique
III. Calculs, Algorithmes et Complexit´e
Universit´e de Provence
Licence Sciences et Technologies & PEI
Ann´ee 2011-2012
Exercice III.1 (Echauffements)
1. On consid`ere la fonction f:NNefinie par :
xN, f(x) = 3×x+ 1 si xest impair,
x/2 si xest pair.
Cette fonction intervient dans une conjecture c´el`ebre appel´ee “conjecture de Syracuse”.
Donner un algorithme qui, ´etant donn´e un nombre naturel x, donne la valeur de f(x).
2. On consid`ere `a pr´esent la fonction de deux variables g:N×NZd´efinie par :
(m, n)N×N, g(m, n) =
1 si m < n,
1 si m > n,
0 sinon.
Donner un algorithme qui, ´etant donn´es deux nombres naturels met n, donne la valeur de
g(m, n).
Exercice III.2 (R´esolution d’une ´equation du second degr´e)
On consid`ere une ´equation du second degr´e, donn´ee par les trois coefficients r´eels a,bet c:
a×x2+b×x+c= 0 (1)
1. Donner un algorithme qui, ´etant donn´e trois coefficients r´eels a,bet c, donne l’ensemble des
solutions r´eelles de l’´equation du second degr´e (1) associ´ee.
2. Donner les op´erations ´el´ementaires qu’il utilise et leur nombre.
Algorithme 1 Premier(entier n)
Entr´ee : Un entier naturel n
Sortie : true si nest 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 p6net pne divise pas nFaire
9: p=p+ 1
10: Fin Tant Que
11: Si pdivise nAlors /* On a trouv´e un diviseur de n*/
12: Retourner false
13: Sinon /* On sait que nn’a pas de diviseur inf´erieur ou ´egal `a n*/
14: Retourner true
15: Fin Si
Exercice III.3 (Test de primalit´e)
Nous avons vu en cours l’algorithme 1 qui permet de d´eterminer si un nombre est premier ou non.
1
1. Ex´ecuter cet algorithme sur les entr´ee 19, 25, 39 et 143.
2. En utilisant Premier comme op´eration ´el´ementaire, ´ecrire un algorithme Affiche Premiers
permettant, ´etant donn´e un entier naturel n, d’afficher tous les nombres premier inf´erieurs
`a n.
Exercice III.4 Pour chacun des probl`emes suivants, donner un algorithme permettant de le
r´esoudre, puis lister les op´erations ´el´ementaires qu’il utilise et donner leur nombre.
(i) Affichage des nombres pairs de 0 `a 20.
(ii) Calcul du pgcd de deux nombres entiers naturels net 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 nFactorielle(n1)
5: Fin Si
Exercice III.5 (R´ecursivit´e)
Il est possible, au sein d’un algorithme, de faire appel `a cet algorithme sur une entr´ee de taille plus
petite. Ce proc´ed´e est appel´e la r´ecursivit´e. L’algorithme 2 illustre cette technique pour le calcul
de la factorielle
1. Ex´ecuter cet algorithme sur les entr´ees 4 et 5.
2. Donner un algorithme r´ecursif pour le calcul de la somme S(n) =
n
X
i=0
i.
Exercice III.6 (Probl`eme de l’arrˆet)
1. Montrer que tous les programmes peuvent ˆetre vus comme des mots finis sur l’alphabet
{0,1}.
2. Consid´erons un programme prog. Une question naturelle sur ce programme est de savoir,
´etant donn´ee une entr´ee input, si l’ex´ecution de prog sur input s’arrˆete ou non (c’est-`a-dire
boucle infiniment).
Nous supposons qu’il existe un programme, intitul´e Stop, qui ´etant donn´e en entr´ee un
programme prog et une entr´ee input de ce programme, retourne 1 si l’ex´ecution de prog sur
input s’arrˆete, et retourne 0 sinon :
Stop(prog,input) = 1si prog(input) termine
0sinon.
Ecrire un algorithme Fou qui, ´etant donn´e en entr´ee un mot prog d´ecrivant un programme,
boucle inifiniment si ce programme s’arrˆete sur l’entr´ee prog, et s’arrˆete sinon.
3. Consid´erer l’ex´ecution du programme Fou sur lui-mˆeme. Conclure que le programme Stop ne
peut pas exister. Ceci d´emontre qu’il n’existe pas d’algorithme capable de d´eterminer, pour
n’importe quel programme, si celui-ci s’arrˆete ou non.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !