P REMIERS ALGORITHMES
1 Introduction
OBJECTIF :L’objectif de ce tp est de rendre l’élève capable :
• de concevoir un algorithme répondant à un problème précisément posé
• d’utiliser des fonctions pour en créer d’autres
• de décomposer un problème en sous problèmes
Q - 1 : Dans le dossier /INFO/1-ALGO-PROG/ALGO-PROG-1, créer un fichier pnom-ALGO-PROG-1-Tp-2.pypour y répondre aux questions suivantes.
2 Crible d’Ératosthène
On cherche à déterminer la liste des nombres premiers jusqu’àn. Pour cela, on utilisera le crible d’Ératosthène vu en cours ou ici.
L’idée est demarquerles nombres qui ne sont pas premiers.
Q - 2:Déterminer la liste des nombres premiers jusqu’à 1000 en utilisant une listeL.
3 Devinettes
La bibliothèquerandompermet de générer de façon aléatoire des nombres.
On placera donc en préambule du fichier les lignes ci-contre : import random as r
La fonctionrandint(n, m)renvoie de façon aléatoire, un entierkdans l’intervalle~n;moùnetmsont des entiers, tels quen<m.
La fonctionrandom()renvoie un nombre appartenant à [0; 1].
Soit la fonctionDevinette(n)qui donne au joueur le plaisir de rechercher un nombre choisi par l’ordinateur :
• le programme choisit un entier naturelxentre 0 etn(n∈N).
• le programme demande au joueur de devinerx
• le joueur propose un nombrer
• le programme lui indique alors sirest supérieur, inférieur ou égale à x
• en cas d’égalité, le programme lui indique le nombre de coups utilisés pour trouverx
• sinon, le programme propose au joueur de recommencer ou de taperqs’il veut arrêter.
Q - 3:Écrire la fonctionDevinette(n).
Cette fois les rôles sont inversés. Le joueur donne un entiermcompris entre 0 etnque le programmeDevin(m, n)doit déterminer. Ce programme est bicéphale, car il recherche le nombremmais s’occupe aussi d’indiquer si ses propositionsr LYCÉECARNOT(DIJON) 1/3 INFO ENMPSI & PCSI - TP2 - ALGO-PROG-1
sont supérieures, inférieures ou égales àx. Évidemment, il n’a pas de droit de tricher. Il indique au joueur toutes les propo- sitionsrqu’il a faites, dans l’ordre chronologique.
Q - 4:Construire un programmeDevin(m, n). Effectuer un test pourm=4etn=10.
Q - 5:Déterminer le nombre de coups nécessaires à votre programme pour déterminer m, pour n =10k avec k∈~1,8.
LYCÉECARNOT(DIJON) 2/3 INFO ENMPSI & PCSI - TP2 - ALGO-PROG-1
>>>
Ok en 3 coups pour m = 4 et n = 10 Ok en 6 coups pour m = 4 et n = 100 Ok en 8 coups pour m = 4 et n = 1000 Ok en 12 coups pour m = 4 et n = 10000 Ok en 16 coups pour m = 4 et n = 100000 Ok en 18 coups pour m = 4 et n = 1000000 Ok en 22 coups pour m = 4 et n = 10000000 Ok en 23 coups pour m = 4 et n = 100000000
LYCÉECARNOT(DIJON) 3/3 INFO ENMPSI & PCSI - TP2 - ALGO-PROG-1