Université d’Orléans Algorithmique 1 L1 Maths STIC, PCSI Année scolaire 2007-2008 Feuille de Travaux Dirigés n◦ 2. Exercice 11 Nombre premier Écrire un programme qui détermine si un nombre est premier. Un nombre est premier si ses seuls diviseurs sont 1 et lui-même. Exercice 12 BOUCLES Exercice 1 Écrire un programme qui calcule la somme des n premiers entiers, n étant saisi au clavier. n Exercice 2 Écrire un programme qui permet de saisir deux entiers x et n, puis qui calcule x par multiplications successives. Exercice 3 Écrire un programme qui affiche tous les couples (x, y) où x est un entier compris entre 1 et p et y un entier compris entre 1 et q; p et q sont deux entiers strictement positifs lus au clavier. Exercice 4 Écrire un programme qui, étant donné un entier n strictement plus grand que 2, affiche tous les ensembles A ⊆ {1, · · · , n} tels que A ait exactement trois éléments. Si l’entier est inférieur ou égal à 2, on demandera à l’utilisateur de saisir un nouvel entier. Par exemple, pour n = 5, le programme affiche : {1,2,3} {1,2,4} {1,2,5} {1,3,4} {1,3,5} {1,4,5} {2,3,4} {2,3,5} {2,4,5} {3,4,5} Exercice 5 Écrire un programme qui étant donné un entier positif ou nul, calcule la factorielle de cet entier. Si l’entier est strictement négatif, on demandera à l’utilisateur de saisir un nouvel entier. Puis, écrire un programme qui étant donnés deux nombres p et q, calcule Cpq . Rappel : La factorielle de n, notée n!, est : n ! = 1 ∗ 2 ∗ · · · ∗ n La combinaison de p parmi p p! est : Cpq = q!∗(p−q)! Exercice 6 Écrire un programme qui permet de retrouver le maximum et le minimum d’une liste de nombres positifs saisis par l’utilisateur. La fin de liste est indiquée par un nombre négatif. La longueur de la liste n’est pas limitée. Exemple : 7 2 20 15 2 6 5 -1. Le maximum est 20, le minimum est 2. • Indiquer la valeur de x à la fin de ces boucles, ainsi que le nombre d’itérations effectuées. • Puis remplacer toutes les boucles par des boucles Tant que 1 - x<-2 Pourtout i de 1 à 10 faire x<-x+2 FinPour 2 - i<-1 ; x<-1 Répéter x<-i i<-i+1 Jusqu’à (i>10) 3 - i<-1 ; x<-1 Répéter x<-x+2 i<-i+1 Jusqu’à (i>= 5) 4- i<-1 ; x<-0 Répéter x<-x+2 i<-i+1 Jusqu’à (i >= x) 5- i<-1 ; x<-2 Répéter x<-x+2 i<-i+1 Jusqu’à (i < x) Exercice 13 Écrire un programme qui étant donnés le n◦ de jour (1, · · · , 7) et l’heure (de 0 à 24) affiche le jour correspondant et le nombre d’heures écoulées depuis le début de la semaine. Si le jour ou l’heure n’est pas valide alors il redemande la saisie jusqu’à avoir une valeur valide. Exercice 7 Écrire un programme qui renverse un entier saisis au clavier. Par exemple, si l’on saisit 1234, le programme affiche 4321. Exercice 14 Calcul du PGCD Le plus grand diviseur commun (PGCD) de deux entiers positifs a et b, avec a > b, est tel que P GCD(a, b) = P GCD(b, a mod b) et P GCD(a, 0) = a. Exercice 8 Saisir la longueur et la largeur d’un rectangle et afficher à l’écran le rectangle formé du caractère *. Utiliser ces informations pour écrire un algorithme qui calcule le PGCD de deux entiers strictement positifs (on recommencera la saisie des nombres jusqu’à ce qu’ils soient bien strictement positifs). Puis modifier le programme pour qu’il affiche seulement le contour du rectangle. Exercice 9 Écrire un programme qui affiche la table de multiplication de 1 à 10. Exercice 10 Nombre parfait Écrire un programme qui détermine si un nombre est parfait. Un nombre est parfait s’il est égal à la somme de ses diviseurs stricts. Par exemple, 28 est parfait car 28 = 1 + 2 + 4 + 7 + 14. Modifier votre programme pour qu’il affiche tous les nombres parfaits ente 1 et 100. 1 Exercice 15 Suite de Fibonacci La suite de Fibonacci est définie par u0 = 1, u1 = 1 et un+2 = un+1 + un pour n > 0. Écrire un programme qui étant donné un entier n positif, donne le nième terme de la suite de fibonacci. Exercice 16 Le nombre 5 est un entier pythagoricien car il existe deux autres entiers, en l’occurence 3 et 4, tels que 52 = 32 + 42 . Écrire un programme qui recherche et affiche tous les entiers pythagoriciens compris entre 1 et 100. 2 Exercice 17 Le jeu du nombre mystérieux Un entier est entré par le joueur A. Le joueur B doit ensuite retrouver ce nombre. Il entre un nombre. Si ce n’est pas le bon, l’ordinateur indique si le nombre donné par B est trop grand ou trop petit. B a le droit à 10 essais pour trouver le nombre de A. À la fin de la partie, l’ordinateur propose de recommencer une nouvelle partie. Si B décline l’offre, le programme affiche le nombre total de parties jouées et le nombre de parties gagnées par B. Exercice 18 Écrire un programme qui pour un n donné : • Si n est strictement positif, saisit au clavier n nombre(s) strictement(s) positif(s) a1 , · · · , an tel que ∀ai , 0 < ai < 4. Puis, il affiche la moyenne (n1 ∗ 1 + n2 ∗ 2 + n3 ∗ 3)/n, où ni désigne le nombre d‘apparitions de i parmi le(s) nombre(s) saisi(s). • Si n est négatif, affiche −1. Exercice 19 Conjecture de Goldbach La conjecture de Goldbach affirme que tout nombre pair peut s’écrire comme la somme de deux nombres premiers. Par exemple, 500 s’écrit comme 1+499, où 1 et 499 sont premiers. Écrire un programme qui étant donné un entier n positif et pair, donne la liste (si possible) de toutes les décompositions de ce nombre comme la somme de deux nombres premiers. Si l’entier est négatif ou impair, on demandera à l’utilisateur de saisir un nouvel entier. Puis écrire un programme qui étant donné un entier n strictement positif, affiche la liste des nombres pairs vérifiant la conjecture de Goldbach et compris entre 1 et n. 3