Algorithmique Algorithmes Table des matières I Programme I.1 Extrait du programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I.2 Extrait du document d’accompagnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 II Références sur l’ e-toile 2 III Tester la compréhension d’un algorithme 3 IV Algorithmes liés au programme de la classe de première IV.1 Écriture en base b d’un entier donné en base 10 . . . . . . . IV.2 Liste des diviseurs positifs d’un entier . . . . . . . . . . . . IV.3 Diviseurs communs et pgcd . . . . . . . . . . . . . . . . . . IV.4 Algorithme d’Euclide . . . . . . . . . . . . . . . . . . . . . . IV.5 Factorisation d’un entier en facteurs premiers . . . . . . . . IV.6 Travail sur le système décimal . . . . . . . . . . . . . . . . . IV.7 Probabilités et simulations . . . . . . . . . . . . . . . . . . . V Les V.1 V.2 V.3 . . . . . . . 3 3 4 4 5 6 6 7 suites Somme de termes d’indices consécutifs d’une suite arithmétique . . . . . . . . . . . . . . . . . . . . . . Somme de termes d’indices consécutifs d’une suite géométrique . . . . . . . . . . . . . . . . . . . . . . Limite d’une suite géométrique : quelques annales du bacc . . . . . . . . . . . . . . . . . . . . . . . . . 10 10 11 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VI Récurrence 14 VIILa division euclidienne VII.1Calcul d’un quotient de division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VII.2Calcul du reste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VII.3Algorithme de division euclidienne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 15 16 VIII Algorithme de multiplication 18 IX Les congruences IX.1 Congruence de deux entiers relatifs selon IX.2 Congruences . . . . . . . . . . . . . . . . IX.3 Des critères de divisibilité en base 10 . . IX.4 Clefs de contrôle . . . . . . . . . . . . . X un . . . . . . module . . . . . . . . . . . . . . . Écriture décimale d’un réel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 19 19 23 24 XI Exponentielle 26 XIILogarithme 27 Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 1/28 Algorithmique I Programme I.1 Extrait du programme Les activités algorithmiques apportent un éclairage pratique par l’étude de problèmes liés à la réalisation effective des opérations mathématiques. Les objectifs du programme : 1. attirer l’attention des élèves sur la différence entre la résolution abstraite d’un problème et la succession des opérations permettant de produire un objet mathématique qui en est solution (exacte ou approchée) ; 2. soulever la question de l’efficacité des algorithmes rencontrés, en termes de nombres d’opérations élémentaires nécessaires. L’algorithme est ici considéré comme un outil dont on s’attache à découvrir les propriétés, sans toutefois développer une théorie, même très élémentaire de la complexité ou de la rapidité. Les notions sont à travailler progressivement et à mobiliser dans toutes les parties du programme. Les élèves seront entraînés : 1. à décrire certains algorithmes en langage naturel ; 2. à en réaliser quelques-uns parmi les plus simples, à l’aide d’un tableur ou d’une calculatrice ou d’un logiciel adapté ; 3. à interpréter des algorithmes plus complexes (c’est à dire à identifier ce qu’ils produisent). L’utilisation des fonctions logiques du tableur est l’occasion de compléter le travail dans le domaine de la logique. I.2 Extrait du document d’accompagnement Le développement fulgurant de l’informatique ces dernières décennies est lié à la réalisation de logiciels toujours plus puissants et fondés sur la conception et la mise en oeuvre d’algorithmes. Parmi les plus utilisés « sans le savoir », on peut citer les algorithmes de compression de données et les algorithmes des moteurs de recherche. Dans un tel contexte, il est essentiel que les élèves soient suffisamment familiarisés avec le type particulier de démarche que nécessite l’algorithmique. L’enseignement des mathématiques constitue un point d’ancrage particulièrement favorable pour cela. Le travail à réaliser prolonge l’apprentissage des élèves amorcé durant les années antérieures. Citons par exemple la compréhension et la mise en oeuvre des algorithmes des opérations et en particulier de celui de la division euclidienne dès l’enseignement primaire, d’algorithmes de recherche du PGCD étudiés en classe de troisième. Mais dans le cadre de ce programme, construire un algorithme pour résoudre un problème, c’est non seulement trouver une méthode de calcul d’une solution à ce problème, mais écrire cette méthode sous forme d’une suite d’instructions élémentaires : affectations de variables (initialisation ou calcul), branchements (condition ou boucle itérée), affichages. Il s’agit donc d’aller plus loin que dans les classes antérieures, afin de rendre les élèves capables de concevoir par eux-mêmes quelques algorithmes simples et de comprendre ce que produisent certains algorithmes plus complexes. Outre son intérêt culturel, cet apprentissage présente également un objectif pédagogique important, convergeant avec l’objectif poursuivi par le travail à réaliser sur la logique. Il s’agit d’apprendre aux élèves à imaginer ou à suivre le déroulement d’une suite d’instructions en fonction de conditions logiques. L’étude d’algorithmes doit être proposée régulièrement, pour résoudre des problèmes simples, sans que l’algorithmique ne fasse l’objet d’un enseignement isolé. Un enjeu important consiste à permettre aux élèves de faire la différence entre la résolution abstraite d’un problème et la production d’une solution exacte ou approchée de ce problème. II Références sur l’ e-toile – http ://eduscol.education.fr/D0015/LLPHPR01.htm : les programmes et les documents d’accompagnement. – http ://ldif.education.gouv.fr/wws/info/eduscol.maths-l : Une liste de discussion nationale sur l’enseignement des maths en L avec un espace de mutualisation de documents. – http ://www.pise.info/algo/ : Un cours complet d’algorithmique Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 2/28 Algorithmique III Tester la compréhension d’un algorithme Des idées pour le travail des élèves sur la compréhension d’un algorithme : 1. Demander la sortie pour une valeur donnée de l’entrée. 2. Remplir sous forme d’un tableau les valeurs successives des variables (avec des valeurs particulières des entrées). 3. Des éléments de démonstration de validité de l’algorithme (cf exercice 47 ou 33 ). 4. Demander de compléter une instruction, le reste et le rôle du programme étant donnés (exemple : exercice 23). 5. Ajouter une instruction pour une modification mineure (exemple : exercices 4 , 45 ) 6. Réexploiter les algorithmes de base dans diverses situations (cf les exercices utilisant les calculs de reste ou de quotient). 7. Utiliser la connaissance du tableur en faisant traduire un programme calculatrice sur tableur, les petites adaptations d’une machine à l’autre obligent à une bonne analyse. 8. Toujours travailler sur des algorithmes en lien avec le reste du chapitre, pas d’algorithme “gratuit”. IV Algorithmes liés au programme de la classe de première Du fait de l’importance du travail d’arithmétique en terminale, les algorithmes plus directement liés à la classe de première peuvent être revus, réutilisés en terminale. IV.1 Écriture en base b d’un entier donné en base 10 Entrée Traitement Sortie Un entier naturel n et un entier b > 1 Affecter à A la valeur de n Tant que A > 0 Afficher le reste de la division de A par b Affecter à A la valeur du quotient de la division de A par b les « chiffres » affichés au fur et à mesure du traitement sont ceux de l’écriture de n en base b Sur calculatrices : Ti Casio Prompt N “N” : ? → N Prompt B “B” : ? → B N →A N →A While A > 0 While A > 0 int(A/B) → Q Intg(A ÷ B) → Q A−B∗Q→R A−B×Q→R Q→A Q→A Disp R R Pause End WhileEnd Sur tableur : Construire une feuille de calcul (seules les cases grisées sont à remplir) permettant d’effectuer un changement de base suivant le modèle suivant : Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 3/28 Algorithmique IV.2 Liste des diviseurs positifs d’un entier Exercice 1 (algorithme de recherche des diviseurs d’un entier). 1. Compléter la partie traitement de l’algorithme suivant : Entrée a un entier naturel non nul Traitement Sortie les diviseurs de l’entier a 2. Écrire le programme pour votre calculatrice. Exercice 2 (amélioration de l’algorithme de recherche des diviseurs). Pour améliorer l’algorithme de recherche des diviseurs d’un naturel non nul a, on se propose d’afficher les diviseurs par couple (c’est à dire : lorsqu’on affiche le diviseur u, on affiche aussi le diviseur v tel que uv = a). Entrée un entier naturel a > 1 Traitement Sortie les couples (u; v) d’entiers naturels tels que uv = a et u 6 v Proposer un tel algorithme puis l’écrire dans le langage de votre calculatrice. IV.3 Diviseurs communs et pgcd Exercice 3. Compléter la partie traitement de l’algorithme suivant : Entrée a et b deux entiers naturels non nuls Traitement Sortie les diviseurs communs à a et b Exercice 4. On considère l’algorithme suivant : Entrée a, b deux entiers naturels non nuls Traitement Pour i prenant successivement les valeurs entières de 1 et a a a b b si E = et E = alors afficher i i i i i Sortie Da ∩ Db , faite au fur et à mesure du traitement 1. La sortie est-elle la même avec l’entrée (a; b) = (1000; 12) et avec l’entrée (a; b) = (12; 1000) ? 2. Le temps de calcul est-il le même dans les deux cas ? 3. Proposer une modification du programme pour que la boucle s’arrête toujours lorsque le plus petit (min {a; b}) entier est atteint. Exercice 5. En utilisant l’algorithme de recherche des diviseurs communs aux deux entiers a et b, compléter la partie traitement de l’algorithme suivant : Entrée a et b deux entiers naturels non nuls Traitement Sortie pgcd (a; b) Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 4/28 Algorithmique IV.4 Algorithme d’Euclide Entrée Traitement Sortie= pgcd(a; b) Algorithme d’Euclide a et b deux entiers (non nuls) affecter à r le reste de la division euclidienne de a par b Tant que r > 0 affecter à a la valeur de b affecter à b la valeur de r affecter à r le reste dans la division de a par b la dernière valeur non nulle de r, c’est à dire la dernière valeur affectée à b Sur calculatrices : Ti Prompt A,B Casio “A” : ? → A “B” : ? → B A − int(A/B) ∗ B → R A − Intg(A ÷ B) × B → R While R > 0 While R > 0 B→A B→A R→B R→B A − int(A/B) ∗ B → R A − Intg(A ÷ B) × B → R End WhileEnd Disp B B Sur tableur : Construire une feuille de calcul (seules les cases grisées sont à remplir) permettant de calculer le PGCD de deux entiers suivant le modèle suivant : Exercice 6. On applique l’algorithme d’Euclide à deux entiers a et b : Étape dividende diviseur reste 1 a b r1 2 b r1 r2 3 r1 r2 r3 4 r2 r3 0 1. En utilisant le lemme d’Euclide et le descriptif de l’algorithme, expliquer pourquoi les diviseurs communs à a et b sont exactement les diviseurs de leur pgcd. 2. Écrire un programme pour votre calculatrice qui utilise la propriété précédente pour déterminer les diviseurs communs à deux entiers a et b. Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 5/28 Algorithmique IV.5 Factorisation d’un entier en facteurs premiers Entrée Traitement Décompose un entier n > 1 affecter la valeur n à a Pour d prenant les valeurs entières de 2 à E n Tant que d divise a afficher la valeur de d a affecter à a la valeur de d Ti Casio Prompt N “N” : ? → N N →A N →A For(D,2,int(N/2)) For 2 → D To Intg(N ÷ 2) While int(A/D) = A/D While Intg(A ÷ D) = A ÷ D Disp D D Pause A/D → A A÷D →A End WhileEnd End Next IV.6 2 Travail sur le système décimal Exercice 7 (« programme » sans boucle pour une première prise en main de la calculatrice). On considère un nombre de trois chiffres xyz. On le réécrit “à droite de lui-même” pour obtenir le nombre à six chiffres : xyzxyz. On divise ce nombre par 7, puis le résultat par 11, puis le nouveau résultat par 13. 1. « On considère un nombre de trois chiffres xyz. On le réécrit “à droite de lui-même” pour obtenir le nombre à six chiffres : xyzxyz. » Réécrire cette phrase à l’aide d’une multiplication et d’une addition. 2. Ecrire un programme pour votre calculatrice qui demande un entier N de trois chiffres puis lui applique les opérations décrites ci-dessus et affiche le résultat de la dernière division. 3. Sur tableur : Construire une feuille de calcul (seules la case grisée est à remplir) suivant le modèle suivant : Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 6/28 Algorithmique 4. Expliquer les résultats observés. Exercice 8 (carré d’un nombre de chiffre des unités 5). 1. On considère l’algorithme suivant : Entrée N un entier naturel Initialisation donner à U la valeur N Traitement Tant que U > 10 : Affecter à U la valeur U − 10 affecter à A la valeur (N − U )/10 affecter à C la valeur A × (A + 1) × 100 + 25 Sortie Afficher la valeur de C (a) Quelle est la sortie avec N = 27 pour entrée ? (b) Quelle est la sortie avec N = 129 pour entrée ? (c) Écrire le programme pour votre calculatrice. (d) Sur tableur construire une feuille de calcul mettant en oeuvre l’algorithme précédent. 2. Soit N un entier dont le chiffre des unités vaut 5. (a) Vérifier sur quelques exemples avec votre calculatrice que la sortie de l’algorithme appliqué à un tel entier N est le carré du nombre N proposé. (b) Justifier ce résultat. (c) Calculer, sans machine, le carré de N1 = 45 et le carré de N2 = 75 à l’aide de l’algorithme proposé. IV.7 Probabilités et simulations Exercice 9. Entrez dans votre calculatrice le programme suivant : Ti Casio Entrer « à la main » 6 zéros dans la liste 1 (menu LIST) For(I,1,6) Fill(0, List 1) 0 → L1 (I) End For(J,1,1000) For 1 → J To 1000 randInt(1,6)→ S Intg(6× Ran# +1)→ S L1 (S) + 1 → L1 (S) List 1[S]+1 →List 1[S] End Next For(J,1,1000) For 1 → J To 1000 L1 (S)/1000 → L1 (S) List 1[S]÷1000 →List 1[S] End Next Afficher la liste L1 (menu stat) Afficher la liste 1 (menu LIST) après exécution du programme après exécution du programme A quoi correspond la sortie de ce programme ? Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 7/28 Algorithmique Exercice 10. Une expérience aléatoire consiste à lancer deux dés et à noter la somme des points obtenus. L’univers de cette expérience aléatoire est donc Ω = {2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12} On veut obtenir par simulation un échantillon de cette expérience aléatoire. 1. On considère l’algorithme suivant : Entrée un entier N Traitement Affecter la valeur 0 à A Affecter la valeur 0 à B Pour j prenant successivement les valeurs entières de 1 à N lancer deux dés et affecter la somme à la mémoire S Si S = 6 affecter à A la valeur A + 1 Si S = 7 affecter à B la valeur B + 1 A Affecter à A la valeur N B Affecter à B la valeur N Sortie Afficher la valeur de A et la valeur de B Avec une entrée de N = 50 (par exemple), comment s’interprète la sortie de cet algorithme ? 2. Écrire le programme précédent pour votre calculatrice. 3. Une calculatrice étant trop lente pour lancer un grand nombre de fois les deux dés, on peut programmer cela sur un logiciel de calcul formel ou sur un tableur. On peut utiliser par exemple le logiciel de calcul formel Xcas (logiciel gratuit téléchargeable sur internet). Programme Xcas LancerDeuxDes(n) := Nom du programme n, paramètre, sera le nombre de lancers { ouverture du corps du programme local f,j,s ; déclaration des variables utilisées dans le programme for (j :=2 ;j<=12 ;j++){f[j] :=0 ;} ; mise à 0 de f2 , f3 , . . ., f12 for (j :=1 ;j<=n ;j++) on lance n fois {s :=rand(6)+1+rand(6)+1 ; deux dés f[s] :=f[s]+1 ;} ; on incrémente le compteur de somme adéquat for (j :=2 ;j<=12 ;j++){f[j] :=evalf(f[j]/n) ;} ; on remplace les effectifs par les fréquences return f ; le résultat du programme est la liste des fréquences de chaque somme } fermeture du corps du programme 4. Autre possibilité : utiliser un tableur. Utilisons par exemple le tableur de la suite Open Office (suite bureautique complète gratuite et téléchargeable sur internet). On construira une feuille de calcul suivant le modèle ci-dessous : ∗ Pour jeter un dé : =ALEA.ENTRE.BORNES(1 ;6) Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 8/28 Algorithmique ∗ Pour jeter deux dés et calculer la somme, on inscrira donc dans la case A1 de la feuille de calcul : =ALEA.ENTRE.BORNES(1 ;6)+ALEA.ENTRE.BORNES(1 ;6) ∗ Recopier cette formule dans les 4000 cases numérotées de A1 à D1000 . ∗ En colonne F, inscrire dans les 11 cases de F2 à F12 par exemple les entiers de 2 à 12. ∗ Pour compter, dans notre échantillon de 4000 lancers, le nombre de sommes égales à 2 par exemple, inscrire dans la case G2 la formule : =NB.SI($A$1 :$D$1000 ;F2) ∗ Recopier cette formule afin de compter l’effectif obtenu pour chacune des sommes. ∗ Afficher enfin en colonne H les fréquences obtenues (effectif /effectif total , c’est à dire ici effectif/4000 ). Exercice 11. On lance deux pièces équilibrées identiques. L’expérience a trois issues : ∗ les deux pièces montrent PILE ∗ les deux pièces montrent FACE ∗ une pièce montre FACE, l’autre montre PILE ce que l’on pourra noter par : Ω = {P P, F F, P F }. On cherche à savoir si une modélisation par la loi équirépartie Issues FF PP FP 1 1 1 convient. Probabilités 3 3 3 Pour cela, on simule le lancer de deux pièces sur un tableur suivant le modèle suivant : 1. Pour lancer une pièce, on utilisera : =ALEA.ENTRE.BORNES(0 ;1) (qui tire 0 ou 1 de façon équiprobable) en convenant que 0 est PILE et 1 est FACE. 2. Pour lancer deux pièces, on utilisera : =ALEA.ENTRE.BORNES(0 ;1)+ALEA.ENTRE.BORNES(0 ;1) Quels sont les résultats possibles d’une telle instruction ? Comment les interprètera-t-on ? 3. Remplir les 4000 cases de A1 à D1000 avec l’instruction précédente. 4. Comptabiliser les résultats 0, 1 et 2 obtenus avec l’instruction NB.SI(plage ;critère) . 5. La loi équirépartie sur Ω semble-t-elle adaptée ? 6. Peut-on donner une explication ? 7. Écrire un programme (en français puis dans le langage de votre calculatrice) qui permettent de lancer N fois les deux pièces (N étant l’entrée du programme) et qui affiche la distribution de fréquences pour les issues PP, PF et FF obtenue. Exercice 12 (La course du lièvre et de la tortue). On lance un dé. Si le 6 sort le lièvre gagne, sinon la tortue avance d’une case. La tortue gagne lorsqu’elle a avancé de six cases. 1. Écrire la partie traitement du programme suivant et entrer le programme dans votre calculatrice : Entrée N ∈ N∗ (nombre de courses) Traitement N courses du lièvre et de la tortue Sortie les fréquences de gain du lièvre, de la tortue Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 9/28 Algorithmique 2. Dans une feuille de tableur, simuler 1000 courses (on utilisera ALEA.ENTRE.BORNES(1 ;6) et NB.SI(plage ;critère)). Afficher les fréquences de parties gagnées pour chacun des protagonistes. 3. Combien de nombres différents peut-on écrire avec les six chiffres d’un dé ? 4. Combien de ces nombres ne contiennent pas de 6 ? 5. Donner alors la probabilité de gagner de chacun des protagonistes. V Les suites Intérêt des algorithmes de sommation comme premiers algorithmes : – Algorithme court, faisant intervenir des boucles. – modification d’une ou deux instructions d’un exo à l’autre (modif du terme à ajouter, modif du début de boucle notamment) qui oblige les élèves à « s’approprier » l’algorithme. – Les suites arithmético-géométriques (exemple plus loin tiré d’annales du bacc) : on peut conjecturer la limite avant de faire des calculs plus théoriques. V.1 Somme de termes d’indices consécutifs d’une suite arithmétique Exercice 13. Soit u la suite définie pour tout entier n par un = 5 × n + 8. On note pour m ∈ N : Sm = u0 + u1 + · · · + um . 1. Calculer « à la main » S3 . 2. Écrire la partie « traitement » du programme : Entrée un entier naturel m Traitement Sortie la valeur de Sm 3. Traduire ce programme pour votre calculatrice. 4. Que donne le programme de votre calculatrice pour S100 ? 5. Quelle est la nature de la suite u ? 6. (a) Écrire la partie « traitement » du programme : Entrée La raison r d’une suite arithmétique u et son premier terme u0 Traitement Sortie affichage des valeurs de ui + u100−i pour 0 6 i 6 100 (b) Traduire ce programme pour votre calculatrice. (c) Que constate-t-on ? Justifier ces résultats. 7. En quoi la présentation ci-dessous permet-elle un calcul « à la main » de la somme S100 ? ⊕ S100 S100 2S100 = u0 = u100 = + u1 + u99 + u2 + u98 + . . . + u98 + . . . + u2 + u99 + u1 + u100 + u0 8. Dans une feuille de tableur, on veut afficher : Colonne A 0 1 2 3 .. . Colonne B u0 u1 u2 u3 .. . Colonne C S0 S1 S2 S3 .. . Construire une telle feuille. Calculer une fois de plus S100 . Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 10/28 Algorithmique Exercice 14 (Somme des impairs et racine carrée). 1. Quelle différence y a-t-il dans les sorties des deux petits programmes suivants : Entrée Traitement et sortie Programme 1 un entier n > 0 Pour j prenant successivement les valeurs entières de 1 à n : afficher 2j − 1 Entrée Traitement et sortie Programme 2 un entier n > 0 Pour j prenant successivement les valeurs entières de 0 à n − 1 : afficher 2j + 1 2. Calculer la somme Sn des n premiers entiers naturels impairs. 3. On considère l’algorithme suivant : Entrée un entier M > 0 Traitement Affecter la valeur 1 à C Affecter la valeur 1 à I affecter la valeur 1 à S Tant que S 6 M affecter la valeur I + 2 à I affecter la valeur S + I à S Affecter la valeur C + 1 à C Sortie Afficher la valeur de C − 1 (a) Quelle est la sortie avec l’entrée M = 25 ? (b) Quelle est la sortie avec l’entrée M = 82 ? (c) Quel est le lien entre la sortie de façon générale ? 4. Quelles sont les sorties de l’algorithme suivant : Entrée un entier M > 0 Traitement Affecter la valeur 1 à I affecter la valeur 1 à S Tant que S 6 M affecter la valeur I + 2 à I affecter la valeur S + I à S I −1 Sortie Afficher la valeur de 2 V.2 Somme de termes d’indices consécutifs d’une suite géométrique Exercice 15. Soit u la suite définie pour tout entier n par un = 2n . On cherche une méthode pour déterminer la valeur des sommes n X Sn = ui . i=0 1. Ecrire un programme pour votre calculatrice qui calcule Sn . Donner la valeur affichée par la machine pour S15 . 2. Quelle est la nature de la suite u ? 3. (a) Écrire la partie « traitement » du programme : Entrée La raison q d’une suite géométrique u et son premier terme u0 Traitement Sortie affichage des valeurs de ui + u15−i pour 0 6 i 6 15 (b) Traduire ce programme pour votre calculatrice. (c) Que constate-t-on ? Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 11/28 Algorithmique (d) Expliquer pourquoi la méthode utilisée pour les sommes de termes d’indices consécutifs d’une suite arithmétique (c’est à dire : effectuer la somme ci-dessous terme à terme) ne fonctionne pas ici. ⊕ S15 S15 2S15 = u0 = u15 = + u1 + u14 + u2 + u13 + . . . + u13 + . . . + u2 + u14 + u1 + u15 + u0 4. En quoi la présentation ci-dessous permet-elle un calcul « à la main » de la somme S15 ? S15 2 × S15 −S15 = u0 = 2u0 = + u1 + 2u1 + u2 + 2u2 + . . . + u13 + . . . + 2u13 + u14 + 2u14 + u15 + 2u15 Exercice 16 (d’après bacc, Polynésie, juin 2005). Gaston hésite entre deux contrats d’embauche pour lesquels le salaire du premier mois est de 1600 euros. Contrat no 1 : chaque mois à partir du deuxième mois le salaire mensuel augmente de 10 euros. Contrat no 2 : chaque mois à partir du deuxième mois le salaire augmente de 0, 6 % par rapport au mois précédent. Écrire un programme pour votre calculatrice qui détermine à partir de quel mois le salaire mensuel correspondant au contrat no 2 devient supérieur à celui du contrat no 1. Répondre à la question précédente à l’aide d’une feuille de calcul. V.3 Limite d’une suite géométrique : quelques annales du bacc Exercice 17 (Conjecture sur une limite, suite étudiée dans bacc, Antilles, septembre 2002). On considère la suite (un ) définie par u0 = 8 et pour tout entier naturel n : un+1 = 1 un − 5 2 1. Écrire la partie traitement de l’algorithme suivant : Entrée un entier naturel n Traitement Sortie la valeur de un 2. Traduire ensuite l’algorithme pour votre calculatrice. 3. A l’aide de l’algorithme écrit à la question précédente, calculer un pour de grandes valeurs de n. Quelle conjecture pouvez-vous faire sur lim un ? n→+∞ Exercice 18 (d’après bacc novembre 2005, Nouvelle-Calédonie). Un carré d’aire 1 m2 est divisé en 9 carrés égaux comme indiqué sur la figure ci-dessous : On colorie le carré central (1er coloriage) : Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 12/28 Algorithmique Les huit carrés non coloriés sont à leur tour divisés en 9 carrés égaux et on colorie les huit carrés centraux obtenus (2e coloriage) : On poursuit avec la même méthode la division et le coloriage du carré. Pour tout entier n supérieur ou égal à 1, on désigne par An l’aire en m2 de la surface totale coloriée après n coloriages. 1 On a ainsi : A1 = . 9 La surface grisée sur le figure ci-dessus a donc pour aire A2 . On remarquera que chaque étape du coloriage consiste à colorier un neuvième de la surface non coloriée jusque là. 1 1. Justifier que A2 = A1 + (1 − A1 ) puis calculer la valeur numérique exacte de A2 . 9 2. Expliquer pourquoi, pour tout entier n supérieur ou égal à 1, 8 1 An+1 = An + . 9 9 3. (a) Écrire la partie traitement de l’algorithme suivant : Entrée un entier naturel n Traitement Sortie An (b) Traduire ensuite l’algorithme pour votre calculatrice. (c) A l’aide de ce programme, faire une conjecture sur la limite de An quand n tend vers l’infini. 4. Peut-on dans un carré de 1m2 enlever une infinité de points de telle façon que la surface restante soit encore de 1m2 ? Exercice 19 (d’après bacc juin 2006, Polynésie). Un globe-trotter a parié de parcourir 5 000 km à pied. Il peut, frais et dispos, parcourir 50 km en une journée, mais chaque jour la fatigue s’accumule et sa performance diminue de 1 % tous les jours. On notera dn la distance parcourue durant le n-ième jour. 1. On note Ln le nombre total de kilomètres parcourus au bout de n jours (Ln = d1 + d2 + · · · + dn ). (a) Écrire la partie traitement de l’algorithme suivant : Entrée un entier naturel n Traitement Sortie la valeur de Ln (b) Traduire ensuite l’algorithme pour votre calculatrice. (c) A l’aide de l’algorithme, calculer Ln pour des valeurs de n de plus en plus grandes. Quelle conjecture pouvez vous faire sur lim Ln ? n→+∞ 2. (a) Écrire la partie traitement de l’algorithme suivant : Entrée un nombre réel D (0 < D < 5000) Traitement Sortie Le plus petit entier N tel que LN > D (b) Traduire ensuite l’algorithme pour votre calculatrice. (c) Donner, à l’aide de cet algorithme, le nombre minimal de jours N qui seraient nécessaires à notre globetrotter pour parcourir 4 999 km. 3. Calculer Ln en fonction de n. Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 13/28 Algorithmique 4. A l’aide de la formule trouvée à la question 3, vérifier la valeur trouvée par l’algorithme de la question 2 pour le nombre minimal N de jours nécessaires pour parcourir 4 999 km. 5. Déterminer la limite de Ln lorsque n tend vers +∞. Le globe-trotter peut-il parcourir les 5000 km visés ? 6. Pourquoi la calculatrice affiche-t-elle 5000 pour le calcul de Ln avec des valeurs de n « grandes » ? 7. Répondre au questions précédentes en utilisant une feuille de calcul. VI Récurrence Voir aussi l’exercice 47. Exercice 20 (une intro possible de la récurrence ?). 1 On définit la suite u pour tout entier n ∈ N par u(n) = n (n + 1) (2n + 1). 6 On considère l’algorithme suivant : Traitement donner à S la valeur initiale 0 Pour i prenant successivement les valeurs entières de 1 à 1000 : affecter à S la valeur S + i2 Sortie Afficher la valeur de S 1. Vérifier qu’après l’exécution des instructions de la boucle pour la valeur 1 de l’indice de boucle i, S contient la valeur u(1). 2. Vérifier qu’après l’exécution des instructions de la boucle pour la valeur 2 de l’indice de boucle i, S contient la valeur u(2). 3. On suppose qu’après l’exécution de la boucle pour la valeur j de i, S contient la valeur u(j). Vérifier qu’une exécution de plus de la boucle donnera la valeur u(j + 1) à S. 4. En déduire la valeur de la somme 12 + 22 + 32 + · · · + 10002 . 5. Écrire le programme pour votre calculatrice et vérifier que la sortie est bien celle trouvée précédemment. Exercice 21. Dans cette version, le programme sert seulement à laisser le temps aux élèves de comprendre la formule à démontrer. 1. On considère l’algorithme suivant : Entrée m un entier naturel Traitement donner à S la valeur initiale 0 Pour i prenant successivement les valeurs entières de 1 à m : affecter à S la valeur S + i2 Sortie Afficher la valeur de S (a) Quelle est la sortie avec m = 3 pour entrée ? (b) Quelle est la sortie avec m = 5 pour entrée ? (c) De façon générale, quel lien y a t-il entre la sortie S et l’entrée m ? (d) Écrire l’algorithme pour votre calculatrice. 2. Comparer, pour une même entrée, la sortie donnée par l’algorithme précédent avec la sortie obtenue par le programme suivant : Entrée m un entier naturel 1 Traitement affecter à T la valeur m (m + 1) (2m + 1) 6 Sortie Afficher la valeur de T 3. Quelle conjecture peut-on faire ? Preuve. Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 14/28 Algorithmique VII VII.1 La division euclidienne Calcul d’un quotient de division Exercice 22 (algorithme de calcul de la partie entière d’un quotient). a Soient a un réel positif et b un réel strictement positif. Pour calculer la partie entière du quotient , on procède ainsi : b on aligne des règles de longueur b le long d’un segment de longueur a tant que la longueur de l’alignement de règles ne “dépasse” pas le segment, on compte les règles au fur et à mesure qu’on les pose. a Le nombre final de règles obtenu est la partie entière de . b Écrire un algorithme correspondant à ce descriptif (partie traitement dans le tableau ci-dessous) Entrée a un réel positif, b un réel strictement positif Traitement a Sortie Afficher la valeur de E b Constuire une feuille de calcul suivant la modèle suivant : Exercice 23. a Compléter l’algorithme suivant afin que la sortie soit la partie entière de : b Entrée a ∈ [0; +∞[ et b ∈ ]0; +∞[ Traitement affecter la valeur 0 à q Tant que q × b 6 a affecter la valeur q + 1 à q Sortie Exercice 24 (de l’importance de la condition d’arrêt). On considère les algorithmes suivants : Entrée Initialisation Traitement Sortie Algorithme 1 a un réel positif, b un réel strictement positif donner à q la valeur initiale 0 donner à m la valeur initiale b Tant que m 6 a affecter à q la valeur q + 1 affecter à m la valeur m + b Afficher la valeur de q Entrée Initialisation Traitement Sortie Algorithme 2 a un réel positif, b un réel strictement positif donner à q la valeur initiale 0 donner à m la valeur initiale b Tant que m < a affecter à q la valeur q + 1 affecter à m la valeur m + b Afficher la valeur de q Dans quels cas les sorties de ces deux algorithmes sont-elles différentes ? VII.2 Calcul du reste Exercice 25 (algorithmes de calcul du reste). 1. A l’aide de l’algorithme écrit à l’exercice 22, écrire la partie traitement du programme suivant : Entrée Traitement Sortie un réel positif a et un réel strictement positif b la longueur r non “couverte” par l’alignement de règles lorsqu’on a placé le maximum de règles de longueur b le long d’un segment de longueur a Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 15/28 Algorithmique 2. Voici une autre façon de procèder pour déterminer r : ∗ On dispose d’un segment de longueur a. ∗ tant que le segment est de longueur supérieure ou égale à b, on coupe une longueur b de la partie de segment restante. ∗ la longueur finale est r. Écrire l’algorithme calculant r de cette façon. VII.3 Algorithme de division euclidienne Exercice 26. 1. A partir de chacun des algorithmes de l’exercice 25, proposer un algorithme de division euclidienne : Entrée Traitement Sortie un entier naturel a et un entier naturel non nul b le quotient et le reste de la division euclidienne de a par b 2. Proposer également un programme pour votre calculatrice qui utilise le fait que la fonction partie entière est déjà programmé dans votre calculatrice. Exercice 27. Dans l’algorithme ci-dessous qui donne en sortie le quotient et le reste de la division euclidienne de a par b , remplacer les pointillés par une expression utilisant la variable m : Entrée a ∈ N , b ∈ N∗ Traitement donner à q la valeur initiale 0 donner à m la valeur initiale b Tant que m 6 a affecter à q la valeur q + 1 affecter à m la valeur m + b Fin de la boucle tant que affecter à r la valeur . . . Sortie Afficher la valeur de q et la valeur de r Exercice 28. On considère l’algorithme suivant : Entrée a un entier naturel Traitement donner à q la valeur initiale 0 donner à m la valeur initiale 7 Tant que m 6 a affecter à q la valeur q + 1 affecter à m la valeur m + 7 Fin de la boucle tant que Sortie Si a-7q=q alors afficher OUI sinon afficher NON 1. Quelle est la sortie de cet algorithme avec l’entrée a = 24 ? 2. Quelle est la sortie de cet algorithme avec l’entrée a = 25 ? 3. De façon générale, quelles sont les entrées qui donneront la sortie OUI et les entrées qui donneront la sortie NON ? Exercice 29. Déterminer les entiers naturels compris entre 400 et 500 dont le reste est 5 dans la division euclidienne par 23. 1. En laissant faire la recherche par la calculatrice (algorithme). 2. Sans machine. Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 16/28 Algorithmique Exercice 30. 1. Écrire la partie traitement de l’agorithme suivant : Entrée Traitement Sortie un entier naturel n > 1 les couples (u; v) d’entiers naturels tels que uv = n et u 6 v (a) Donner la sortie pour l’entrée n = 63. (b) Donner la sortie pour l’entrée n = 304. 2. (a) Dans la division euclidienne de deux entiers naturels, le dividende est 78 et le reste est 15. Donner les valeurs possibles du diviseur et du quotient. (b) Dans la division euclidienne de deux entiers naturels, le dividende est 319 et le reste est 15. Donner les valeurs possibles du diviseur et du quotient. (c) Écrire la partie traitement de l’agorithme suivant : Entrée un entier naturel a > 15 Traitement Sortie les couples (diviseur b, quotient q) de la division de a par b, le reste devant être égal à 15 Exercice 31 (cf fichier exemples d’exercices IG). 1. On considère l’algorithme suivant : Entrée Traitement Sortie Algorithme 1 n un entier naturel donner à u la valeur initiale n Tant que u > 11 affecter à u la valeur u − 11 Fin de la boucle « Tant que » Afficher la valeur de u (a) Quelle est la sortie lorsque l’entrée est n = 35 ? (b) Quelle est la sortie lorsque l’entrée est n = 44 ? (c) De façon générale, décrire l’effet de cet algorithme (c’est à dire le lien entre la sortie et l’entrée). (d) On donne un entier n en entrée de l’algorithme 1, la sortie obtenue est u. On donne alors l’entier n − u en entrée de l’algorithme 1. Quelle sera la sortie ? (e) Écrire cet algorithme pour votre calculatrice. 2. On considère l’algorithme suivant : Algorithme 2 Entrée a un chiffre, b un chiffre Traitement affecter à u la valeur a + 10b affecter à v la valeur b + 10a affecter à m la valeur v + 100u Sortie Afficher la valeur de m (a) Quelle est la sortie lorsque l’entrée est a = 1, b = 2 ? (b) Quelle est la sortie lorsque l’entrée est a = 2, b = 1 ? (c) m étant la sortie de l’algorithme 2 avec les chiffres a et b en entrée, donner les chiffres de l’écriture décimale de m (en fonction de a et b). (d) A partir de deux chiffres a et b, l’algorithme 2 donne un nombre m. On donne alors en entrée à l’algorithme 1 ce nombre m. Expliquer pourquoi l’exécution de cet algorithme 1 aura pour sortie 0. (e) Écrire l’algorithme 2 pour votre calculatrice. Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 17/28 Algorithmique Exercice 32. On considère l’algorithme suivant : Entrée Un entier naturel non nul n Traitement Affecter la valeur 0 à c Pour i prenant successivement les valeurs entières de 1 à n : Si le reste de la division de n par i est 0 alors affecter c + 1 à c Sortie afficher la valeur de c 1. Quelle est la sortie de l’algorithme avec l’entrée n = 6 ? 2. De façon générale, quel est le lien entre l’entrée et la sortie ? VIII Algorithme de multiplication Exercice 33. 1. Soit a un entier naturel impair. On note q le quotient de la division de a par 2. Exprimer q en fonction de a, avec la fonction E puis sans utiliser cette fonction. 2. On considère l’algorithme suivant : Entrée un entier naturel x et un entier naturel y Traitement affecter x à a et y à b affecter la valeur 0 à m Tant que a > 0 : Si a est impair affecter la valeur m + b à m Affecter la valeur 2b à b a Affecter la valeur E àa 2 Sortie Afficher la valeur de m (a) Quelle est la sortie de cet algorithme avec les entrées x = 7, y = 8 ? (b) Compléter le tableau de déroulement de l’algorithme ci-dessous avec les entrées x = 5 et y = 3 : Étapes a b m ab + m 1 5 3 0 .. . (c) En entrée de boucle, ab + m est égal au produit xy (car à cette étape, a = x, b = y, m = 0). Expliquer pourquoi après une exécution des instructions de la boucle, ab + m est encore égal à xy : i. lorsque a est pair ; ii. lorsque a est impair. (d) Quel semble être le lien entre l’entrée et la sortie de façon générale ? Justifier. (e) Écrire le programme pour votre calculatrice. IX IX.1 Les congruences Congruence de deux entiers relatifs selon un module Exercice 34. Écrire la partie traitement de l’algorithme ci-dessous : Entrée un entier relatif a, un entier relatif b, un entier naturel non nul m Traitement Sortie OUI lorsque a ≡ b mod m, NON dans les autres cas. Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 18/28 Algorithmique IX.2 Congruences Exercice 35. 1. On considère l’algorithme suivant : Entrée Traitement Sortie un entier n affecter à u la valeur n Tant que u > 2 : affecter à u la valeur u − 5 Fin du tant que la sortie s est la dernière valeur de u 2. ou la feuille de calcul suivante : 3. (a) Quelle est la sortie avec l’entrée n = 13 ? (b) Quelle est la sortie avec l’entrée n = 10 ? (c) Expliquer pourquoi les sorties sont toujours des éléments de l’ensemble S = {−2; −1; 0; 1; 2} et donner le lien entre l’entrée et la sortie. (d) Écrire le programme pour votre calculatrice. 4. L’entier 1 + 22007 + 32007 + 42007 est-il multiple de 5 ? Exercice 36. 1. Montrer que tout entier naturel est congru modulo 7 à l’un des entiers de l’ensemble S = {−3; −2; −1; 0; 1; 2; 3}. 2. Écrire la partie traitement du programme suivant : Entrée un entier n Traitement Sortie L’élément de l’ensemble S qui est congru modulo 7 à l’entrée IX.3 Des critères de divisibilité en base 10 Exercice 37. 1. Montrer qu’un entier naturel n est congru modulo 10 à son chiffre des unités. 2. Écrire la partie traitement du programme suivant : Entrée un entier naturel n Traitement Sortie le chiffre des unités de n 3. Soit m ∈ N∗ . On suppose que pour tout entier naturel n, n est congru modulo m à son chiffre des unités. m est-il nécessairement égal à 10 ? Exercice 38. 1. On considère l’algorithme suivant : Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 19/28 Algorithmique Algorithme 1 un entier naturel n (écrit en base 10) Calculer la somme S des chiffres de l’entier n Calculer le reste r de la division de S par 3 Sortie la valeur de r On considère également l’algorithme suivant : Algorithme 2 Entrée un entier naturel n (écrit en base 10) Traitement Affecter à u la valeur de n Tant que u > 3 affecter à u la valeur u − 3 Fin de la boucle « tant que » Sortie la valeur de u Entrée Traitement (a) Quelle est la sortie de l’algorithme 1 avec l’entrée n = 54 ? (b) Quelle est la sortie de l’algorithme 2 avec l’entrée n = 54 ? (c) Les deux algorithmes donneront-ils toujours la même sortie pour un même entier n en entrée ? Justifier. 2. Écrire la partie traitement du programme suivant : Entrée un entier naturel n Traitement Sortie la somme des chiffres de n Exercice 39. Soit n un entier naturel. Soit a le nombre constitué des deux derniers chiffres de n (chiffre des dizaines et des unités). 1. Avec n = 1287, que vaut a ? Vérifier que n ≡ a mod 100. 2. Montrer que n est congru à a modulo 100 dans le cas général. 3. En déduire la partie traitement de l’algorithme suivant : Entrée n un entier naturel Traitement Sortie Un entier de deux chiffres, ces deux chiffres étant les deux derniers chiffres de n Exercice 40. 1. On considère l’algorithme suivant : Algorithme 1 N un entier naturel donner à R la valeur N Tant que R > 4 : Affecter à R la valeur R − 4 Sortie afficher la valeur de R Quel est le lien entre l’entrée et la sortie de cet algorithme ? Entrée Traitement 2. On considère l’algorithme suivant : Algorithme 2 Entrée N un entier naturel Traitement donner à R la valeur N Tant que R > 100 : Affecter à R la valeur R − 100 Tant que R > 4 : Affecter à R la valeur R − 4 Sortie afficher la valeur de R (a) Quelle est la sortie avec N = 584 pour entrée ? (b) Quelle est la sortie avec N = 129 pour entrée ? Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 20/28 Algorithmique (c) Expliquer pourquoi la sortie de l’algorithme est égal au reste de la division de n par 4. 3. Avec l’entrée n = 405 : (a) quel est le nombre de soustractions effectuées dans l’algorithme 1 pour obtenir le reste dans la division par 4? (b) quel est le nombre de soustractions effectuées dans l’algorithme 2 pour obtenir le reste dans la division par 4? 4. (a) Si l’on admet que chaque soustraction demande le même temps de calcul à une machine, lequel des deux algorithmes ci-dessus vaut-il mieux utiliser pour calculer les restes dans la division par 4 ? (b) Quelles sont les entrées qui demanderont le même nombre de soustractions avec les deux algorithmes ? (c) Ajouter des instructions aux programmes 1 et 2 qui donneront en fin de programme le nombre de soustractions qui ont été nécessaires pour le calcul du reste dans la division par 4. 5. Écrire l’algorithme 2 pour votre calculatrice. 6. Traiter la situation précédente à l’aide d’une feuille de calcul. 7. L’algorithme suivant détermine le reste de la division de N par 20 : Algorithme 3 Entrée N un entier naturel Traitement donner à R la valeur N Tant que R > 20 : Affecter à R la valeur R − 20 Sortie afficher la valeur de R Peut-on accélérer cet algorithme avec un procédé analogue à ce qui a été fait pour le calcul du reste dans la division par 4 ? Justifier. 8. Donner des entiers m tels que tout entier n ait même reste dans la division par m que le nombre constitué des deux derniers chiffres de n. Exercice 41. 1. On considère l’algorithme suivant : Entrée Traitement Sortie Algorithme 1 n un entier naturel affecter à u la valeur n Tant que u > 10 : Affecter à u la valeur u − 10 Afficher la valeur de u (a) Quelle est la sortie avec N = 527 pour entrée ? (b) Quelle est la sortie avec N = 29 pour entrée ? (c) Décrire de façon générale le lien entre la sortie et l’entrée. (d) Écrire le programme pour votre calculatrice. 2. On considère l’algorithme suivant : Sous programme 1 (algorithme 1) Entrée n un entier naturel Traitement affecter à u la valeur n Tant que u > 10 : Affecter à u la valeur u − 10 Entrée Traitement Sortie Algorithme 2 n un entier naturel affecter à u la valeur de sortie du sous-programme 1 n−u affecter à n la valeur 10 Afficher la valeur de n Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 21/28 Algorithmique (a) Quelle est la sortie avec N = 527 pour entrée ? (b) Quelle est la sortie avec N = 29 pour entrée ? (c) Décrire de façon générale le lien entre la sortie et l’entrée. (d) Écrire le programme pour votre calculatrice. 3. On considère l’ algorithme suivant : Sous-programme 2 (algorithme 2) Entrée n un entier naturel Traitement affecter à u la valeur de sortie du sous-programme 1 n−u affecter à n la valeur 10 Algorithme 3 Entrée n un entier naturel Traitement affecter à S la valeur 0 affecter à Z la valeur 1 Tant que n 6= 0 affecter à u la valeur de sortie du sous-programme 1 affecter à n la valeur de sortie du sous-programme 2 affecter à S la valeur S + Z × u affecter à Z la valeur −1 × Z Sortie Afficher la valeur de S (a) Quelle est la sortie avec N = 584 pour entrée ? (b) Quelle est la sortie avec N = 5129 pour entrée ? (c) Décrire de façon générale le lien entre la sortie et l’entrée. (d) Écrire le programme pour votre calculatrice. 4. On considère l’ algorithme ci-dessous : Sous-programme 3 (algorithme 3) Entrée n un entier naturel Traitement affecter à S la valeur 0 affecter à Z la valeur 1 Tant que n 6= 0 affecter à u la valeur de sortie du sous-programme 1 affecter à n la valeur de sortie du sous-programme 2 affecter à S la valeur S + Z × u affecter à Z la valeur −1 × Z Entrée Traitement Sortie Algorithme 4 n un entier naturel affecter à S la valeur de sortie du sous-programme 3 affecter à r la valeur de S Tant que r > 11 affecter à r la valeur r − 11 afficher la valeur de r (a) Quelle est la sortie avec l’entrée n = 23 ? (b) Quelle est la sortie avec l’entrée n = 22 ? (c) Quelle est la sortie avec l’entrée n = 40 ? 5. Soit n = mcdu un entier de 4 chiffres (en base 10). Démontrer qu’avec n pour entrée la sortie de l’algorithme 4 est congru modulo 11 à n. 6. Comment modifier le programme 4 pour que la sortie de cet algorithme soit le reste de la division de l’entrée n par 11 ? Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 22/28 Algorithmique IX.4 Clefs de contrôle Exercice 42 (code barre). Pour identifier un produit de consommation, on utilise le « code-barre ». Un code-barre est constitué de 13 chiffres : ∗ le premier chiffre (à gauche) indique le pays de codification (3 pour la France, 4 pour l’Allemagne, 0 pour les États-Unis . . .), ∗ les cinq chiffres suivants identifient le fabricant, ∗ les six chiffres suivants donnent une référence pour le produit (code interne fournisseur), ∗ le dernier chiffre est la clef de contrôle. Calcul de la clef de contrôle : Notons C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C un code-barre. C est la clef de contrôle. C est calculé de façon à ce que l’on ait : 3 (C2 + C4 + C6 + C8 + C10 + C12 ) + (C1 + C3 + C5 + C7 + C9 + C11 ) + C ≡ 0 mod 10 1. On code un produit par C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C = 3 06832004010C. Déterminer la clef de contrôle C. 2. Dans le code-barre suivant : 49?1850108962, quel est le chiffre manquant ? 3. Dans le code-barre suivant : 303526139?353, quel est le chiffre manquant ? 4. On considère l’algorithme suivant : Entrée un entier naturel n Traitement affecter la valeur 0 à P affecter la valeur de n à m Tant que m 6= 0 : affecter à u le chiffre des unités de m m−u remplacer m par 10 affecter à P la valeur P + u affecter à u le chiffre des unités de m m−u remplacer m par 10 Sortie afficher la valeur de P (a) Quelle est la valeur de sortie avec l’entrée n = 1234 ? (b) De façon générale, quel est le lien entre l’entrée et la sortie ? (c) Écrire le programme pour votre calculatrice. 5. Sur le modèle précédent, écrire un algorithme (programme C) qui calcule la somme des chiffres de n qui sont coefficients de 10i avec i impair. 6. Écrire un algorithme qui vérifie la validité d’un code-barre donné en entrée (c’est à dire qui vérifie que l’on a : 3 (C2 + C4 + C6 + C8 + C10 + C12 ) + (C1 + C3 + C5 + C7 + C9 + C11 ) + C ≡ 0 mod 10 ). 7. Écrire un programme qui à partir des douze chiffres d’identification calcule la clef de contrôle. 8. Construire une feuille de calcul selon le modèle suivant : Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 23/28 Algorithmique Exercice 43 (code isbn). Tous les livres édités sont identifiés par un code isbn (international standard book number). Un code isbn est constitué de dix chiffres. Les 9 premiers chiffres donnent des indications sur la langue, l’éditeur, le numéro d’ordre de l’ouvrage chez l’éditeur. Le dixième chiffre est une clef de contrôle, ce dixième chiffre peut être l’un des 11 chiffres 0 ; 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 ; X. Algorithme de calcul de la clef de contrôle : Entrée le numéro d’identification sans la clef (9 chiffres) N = C1 C2 C3 C4 C5 C6 C7 C8 C9 (ce numéro est traité ici comme un nombre) Traitement affecter la valeur 0 à S affecter la valeur 2 à C Pour j prenant les valeurs de 1 à 9 : affecter à U le chiffre des unités de N affecter S + C × U à S affecter la valeur C + 1 à C affecter la valeur (N − U )/10 N à S Affecter à r la valeur S − 11 × E 11 Sortie : la clef Si r = 0 afficher 0, si r = 1 afficher X si 1 < r 6 10 afficher 11 − r. 1. Calculer la clef de contrôle du numéro d’identification : 2 86637 434. 2. Calculer la clef de contrôle du numéro d’identification : 2 10 002583. X Écriture décimale d’un réel Exercice 44. √ 1. (a) On cherche à déterminer les premiers chiffres de l’écriture décimale du nombre réel 3. i. Commencer à compléter le tableau suivant et arrêter de le remplir dès que les calculs effectués per√ mettent de donner la partie entière de 3 : i i2 0 1 2 3 4 5 6 7 8 9 10 11 ... ... ii. Commencer à compléter le tableau suivant et √ arrêter de le remplir dès que les calculs effectués permettent de donner le chiffre des dixièmes de 3 : i 0 1+ i 10 1 2 3 4 5 6 7 8 9 2 iii. Commencer à compléter le tableau suivant et√arrêter de le remplir dès que les calculs effectués permettent de donner le chiffre des centièmes de 3 : i 0 1,7 + i 102 1 2 3 4 5 6 7 8 9 2 (b) Sur le modèle de la question précédente, vous chercherez à écrire la partie traitement de l’algorithme cidessous : Algorithme 1 Entrée Un réel A > 0 et un entier N > 0 Traitement √ Sortie La partie entière et les N premiers chiffres après la virgule de l’écriture décimale de A Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 24/28 Algorithmique (c) Écrire l’algorithme sur votre calculatrice. 2. (a) Soit a ∈ N∗ . On définit une suite u par a u0 = 2 un+1 = 1 un + a 2 un Compléter la partie traitement du programme suivant : Algorithme 2 Entrée un entier a > 0, un entier n > 0 Traitement Sortie Le terme un de la suite ci-dessus (b) Tester le programme avec quelques entrées. Faire une conjecture sur la nature de la sortie de l’algorithme. Exercice 45. On reprend les deux algorithmes de l’exercice précédent : Ti Casio Prompt A “A” : ? → A Prompt N “N” : ? → N 0→R 0→R For(J,0,N ) For 0 → J To N 0→I 0→I 2 2 While R + I/10J 6 A While R + I ÷ 10J 6 A I +1→I I +1→I End WhileEnd J R + (I − 1)/10 → R R + (I − 1) ÷ 10J → R End Next Sortie Disp R R Ti Casio Entrée un entier a > 0, un entier n > 0 a Prompt A,N “A” : ? → A Traitement Affecter à u la valeur “N” : ? → N 2 A/2 → U A÷2→U Pour i prenant les valeurs entières de 1 à n : 1 a For(I,1,N) For 1 → I To N affecter à u la valeur u+ 1/2 ∗ (U + A/U ) → U 1/2 × (U + A ÷ U ) → U 2 u Fin de la boucle « pour » End Next Sortie afficher la valeur de u Disp U U √ On admet que les deux algorithmes permettent d’avoir les premières décimales du nombre a (en calculant pour des valeurs « suffisamment grandes » de n ). On cherche alors à comparer l’efficacité des deux algorithmes. Pour cela, on fait l’hypothèse (simplificatrice) qu’une addition, soustraction, division, comparaison, calcul d’exponentielle sont des « opérations élémentaires » demandant le même temps de calcul à la machine. Entrée Traitement un réel a > 0 et un entier N > 0 Affecter la valeur 0 à r Pour j prenant les valeurs entières de 0 à N Affecter la valeur 0 à i 2 i 6a: Tant que r + j 10 i+1→i Fin du « tant que » i−1 àr Affecter la valeur r + 10j Fin de la boucle « Pour » Afficher la valeur de r 1. Dans la boucle 2 i Tant que r + j 6A: 10 i+1→i Fin du « tant que » combien compte-on d’ « opérations élémentaires » à chaque “passage” dans la boucle ? 2. Même question avec : Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 25/28 Algorithmique Pour j prenant les valeurs entières de 0 à N Affecter la valeur 0 à i 2 i Tant que r + j 6A: 10 i+1→i Fin du « tant que » i−1 àr Affecter la valeur r + 10j Fin de la boucle « Pour » 3. Même question avec : Pour i prenant les valeurs entières de 1 à n : 1 a affecter à u la valeur u+ 2 u Fin de la boucle « pour » √ 4. On aimerait avoir 8 décimales du nombre 7. Le simple décompte précédent d’opérations permet-il de savoir lequel des deux algorithmes donnera le plus rapidement ces 8 décimales ? √ 5. Modifier les deux algorithmes pour qu’ils stoppent dès qu’ils ont obtenu pour a autant de décimales que la calculatrice en connaît et qu’ils affichent alors le nombre d’opérations élémentaires effectuées. Exercice 46 (écriture décimale d’un rationnel). [sur ce sujet, lire le document d’accompagnement] 39 169 1. Écrire le nombre réel comme une somme de produit de la forme ai × 10i où ai est un chiffre et i un entier 2 000 relatif. 2. On considère l’algorithme suivant : Entrées Un entier A > 0, un entier B > 0, un entier N > 0 Traitement Afficher le quotient de la division euclidienne de A par B Affecter à R la valeur du reste de la division de A par B Répéter N fois : Affecter à A la valeur de 10 × R Afficher le quotient de la division euclidienne de A par B Affecter à R la valeur du reste de la division de A par B Sortie faite au fur et à mesure du traitement (a) Quels sont les chiffres en sortie avec les entrées A = 2, B = 5, N = 4 ? (b) Quels sont les chiffres en sortie avec les entrées A = 9, B = 7, N = 7 ? (c) Quels liens peut-on conjecturer entre les entrées et les sorties ? (d) Écrire l’algorithme sur calculatrice. XI Exponentielle Exercice 47. On considère l’algorithme ci-dessous : Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 26/28 Algorithmique Entrée Traitement Sortie un entier naturel n, un réel strictement positif q Affecter la valeur 5 à A Affecter la valeur 6 à B Affecter la valeur q 5 à Z Affecter la valeur q 6 à W Pour i prenant successivement les valeurs entières de 1 à n 1 Affecter la valeur (A + B) à X 2 √ Affecter la valeur ZW à Y Affecter la valeur X à B Affecter la valeur Y à W Afficher X et Y 1. Quelle est la sortie de cet algorithme avec les entrées n = 1, q = 2 ? 2. Quelle est la sortie de cet algorithme avec les entrées n = 2, q = 2 ? 3. Quelle est la sortie de cet algorithme avec les entréeq n = 3, q = 2 ? 1 1 et Y pour valeur q 5+ 21 21 1 1 (b) On suppose qu’après l’exécution de la boucle pour la valeur j de i le couple (X, Y ) vaut 5 + j , q 5+ 2j . Vé2 1 1 rifier qu’après une exécution supplémentaire des instructions de la boucle, le couple (X, Y ) vaut 5 + j+1 , q 5+ 2j+1 2 5. Exprimer le couple (X,Y) obtenu en sortie en fonction de l’entrée n et en déduire que ce couple est le couple des coordonnées d’un point de la courbe représentative de la fonction x 7−→ q x . 4. (a) Vérifier qu’après une exécution des instructions de la boucle, X a pour valeur 5 + XII Logarithme Exercice 48. 1. On considère le programme suivant : Entrée Traitement Sortie Algorithme 1 Un entier naturel non nul n Affecter la valeur 0 à i Tant que 10i 6 n affecter la valeur i + 1 à i Afficher la valeur de i (a) Quelle est la sortie de cet algorithme avec l’entrée n = 125 ? (b) Quelle est la sortie de cet algorithme avec l’entrée n = 10 ? (c) De façon générale, quel est le lien entre l’entrée et la sortie ? 2. Écrire le programme pour votre calculatrice. 3. Modifier le programme pour qu’il affiche le nombre de chiffres nécessaires pour l’écriture de l’entrée n en base b. 4. Montrer que le petit programme ci-dessous a les mêmes sorties que l’algorithme 1 : un petit programme Entrée un entier naturel non nul n Traitement Affecter à i la valeur E (log (n)) + 1 Sortie Afficher la valeur de i 8 5. Donner le nombre de chiffres de n = 8(8 ) . 6. Écrire un programme donnant le chiffre de gauche dans l’écriture décimale d’un entier n. 7. Écrire un programme pour votre calculatrice qui prend en entrée un entier n > 0 et donne en sortie l’entier n0 obtenu en supprimant le chiffre le plus à gauche dans l’écriture décimale de n. (par exemple, l’entrée n = 512 donne la sortie n0 = 12). Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 27/28 Algorithmique 8. Écrire pour votre calculatrice un programme comptant le nombre de chiffres successifs égaux dans le début (à gauche) de l’écriture décimale d’un entier n > 0. Par exemple, avec l’entrée n = 55501, le programme renvoie 3, avec l’entrée n = 2201222, le programme renvoie 2 . . . Académie de Lyon - Janvier 2007 - Nouveaux programmes de TL page 28/28