TS spé Exercices sur les algorithmes liés à la divisibilité et à la division euclidienne « Pour n .... saisi en entrée, la valeur de u affichée en sortie est … ». 2°) Pour un entier naturel n quelconque, quel est le nombre entier naturel fourni par cet algorithme en sortie ? 1 Effectuer avec la calculatrice la division euclidienne de : 220 065 par 324 987 543 210 par 12 456 789 9 999 999 999 999 par 222 222 222 222. Dans chaque cas, écrire l’égalité de la division euclidienne et une phrase de réponse sur le modèle suivant : Dans la division euclidienne de … par … , le quotient est égal à … et le reste est égal à … . 2 On considère l’algorithme suivant où n est un entier naturel. On rappelle ci-dessous le critère de divisibilité par 4 : Initialisation : u prend la valeur n Un entier naturel est divisible par 4 lorsque les deux chiffres de droite de son écriture en base 10 forment un nombre multiple de 4 : 00, 04, 08, 12, ............ 80, 84, 88, 92, 96. Traitement : Tantque u 11 Faire u prend la valeur u 11 FinTantque Exemples : 148 ; 57 376 Sortie : Afficher u Par exemple, 2016 est une année bissextile, car 2016 est divisible par 4. En revanche, 2017 n’est pas une année bissextile. Recopier cet algorithme dans un cadre (sur une même page, on ne doit pas avoir à passer sur une nouvelle page). 1°) Faire fonctionner cet algorithme « à la main » pour les valeurs de n suivantes saisies en entrée : ; ; n 35 n 50 n 55 . Pour chaque valeur de n, on fera un tableau d’évolution de la variable u sur le modèle ci-dessous. 0 Condition u 11 Valeur de u Une année (qui correspond à la durée de révolution de la Terre autour du Soleil) dure 365,2422 jours. Afin que notre calendrier coïncide avec cette période, certaines années durent 365 jours et d’autres 366 jours. La partie décimale de 365,2422 valant presque un quart, on ajoute tous les 4 ans un jour à notre calendrier (le 29 février). Le critère retenu pour déterminer si une année est bissextile ou non est le suivant : Règle N°1 : Si l’année est divisible par 4 alors c’est une année bissextile. Entrée : Saisir n Étape 3 Années bissextiles 35 1 2 vraie vraie 24 13 1°) Déterminer si les années suivantes sont bissextiles : 2014 ; 2015 ; 2020 ; 2026. 2°) L’algorithme ci-dessous détermine selon la règle N°1 si une année N saisie en entrée est bissextile. Entrée : Saisir N Traitement et sortie : Si 4 | N Alors afficher « Année bissextile » Sinon afficher « Année non bissextile » FinSi Deux remarques importantes : Recopier cet algorithme dans un cadre bien centré sur une seule page en respectant la présentation. Il est inutile de programmer l’algorithme sur calculatrice. Programmer cet algorithme sur la calculatrice. Pour chaque valeur de n saisie en entrée, faire une phrase réponse sur le modèle suivant : La règle N°1 n’est pas tout à fait correcte, car elle considère qu’une année dure 365,25 jours en moyenne au lieu de 365,2422. Un léger décalage s’introduit au cours du temps. Une seconde règle a donc été établie : Règle N°2 : Parmi les années de début de siècle, seules celles divisibles par 400 sont bissextiles. N.B. : Les années de début de siècle sont : 100, 200, …, 1200, 1300 etc. 3°) Recopier, en le modifiant, l’algorithme donnée à la question 2°) qui détermine selon les règles N°1 et N°2 si une année est bissextile. On gardera la même structure avec une seule instruction conditionnelle mais en écrivant la condition avec les connecteurs logique « et » et « ou ». Réaliser le programme correspondant sur calculatrice. Pour les exercices 4 et 5 , on rappelle l’algorithme entrée, affiche ses diviseurs positifs en sortie. Le calendrier julien est introduit par Jules César en 46 av. J.-C. pour remplacer le calendrier romain. Il est utilisé dans la Rome antique à partir de 45 av. J.-C.. Il reste employé en Europe jusqu’à son remplacement par le calendrier grégorien à la fin du XVIe siècle. suivant qui, pour un entier naturel n 1 saisi en Entrée : Saisir n Le calendrier grégorien est un calendrier solaire conçu à la fin du XVIe siècle pour corriger la dérive séculaire du calendrier julien alors en usage. Il porte le nom de son instigateur, le pape Grégoire XIII. Adopté à partir de 1582 dans les États catholiques, puis dans les pays protestants, son usage s’est progressivement étendu à l’ensemble du monde au début du XXe siècle. Le calendrier grégorien s’est imposé dans la majeure partie du monde pour les usages civils ; de nombreux autres calendriers sont utilisés pour les usages religieux ou traditionnels. Les années comptent 365 jours dont 28 en février sauf les années bissextiles à 366 jours dont 29 en février. Les années bissextiles sont : - les années dont le millésime est multiple de 4 mais pas de 100 - et les années dont le millésime est multiple de 2 000. Ces décisions ont été prises peu à peu au cours des siècles pour ajuster notre calendrier à l’année des saisons (365,2422 jours). Une année de 365 jours, c’est simple mais trop court ! Il faut donc rajouter des jours. Le calendrier julien, fondé par Jules César comporte un jour doublé tous les quatre ans. Il s’agit du sixième jour avant les calendes de mars qui devient donc bis-sextus martias d’où le nom d’année bissextile. Avec une année de 366 jours tous les quatre ans, la durée moyenne de l’année est de 365,25 jours. Pas mal par rapport à l’année des saisons, mais trop long... Au bout de quatre siècles, le décalage est de trois jours. En 1582, il atteint 12 jours ce qui pose des problèmes aux autorités ecclésiastiques pour fixer certaines fêtes religieuses comme celle de Pâques. Le pape Grégoire XIII ordonne alors une réforme du calendrier : le calendrier grégorien est né. Tout d’abord, il faut résorber le décalage constaté : 10 jours sont simplement supprimés en 1582. Ensuite il faut éliminer les causes du décalage et donc réduire le nombre d’années bissextiles : les années séculaires deviennent non bissextiles sauf si leur millésime est multiple de 400. L’année grégorienne ne comporte plus en moyenne que 365,2425 jours. Elle est encore trop longue de …0,0003 jours par rapport à l’année des saisons. Dans 10 000 ans, notre calendrier aura trois jours de trop ! A Traitement et sorties : Pour i allant de 1 à n Faire Si i | n Alors afficher i FinSi FinPour 4 Pour tout entier naturel n 1 , on note d n le nombre de ses diviseurs positifs. 1°) Recopier et compléter le tableau de valeurs suivant : n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 d n 2°) On admet que l’on ne peut pas donner une expression de d n en fonction de n. Pour calculer la valeur de d n pour un entier naturel n 1 fixé, on peut utiliser un programme. a) Reprendre l’algorithme A et le modifier en introduisant une variable supplémentaire d afin que, pour une valeur de n saisie en entrée, il affiche en sortie la valeur de d n . b) Réaliser le programme correspondant sur calculatrice. c) À l’aide du programme déterminer la valeur de d 1000 . 5 Pour tout entier naturel n 1 , on note S n la somme de ses diviseurs positifs. On admettra que l’on ne peut pas donner une expression de S n en fonction de n. A Reprendre l’algorithme et le modifier en introduisant une variable supplémentaire d afin que, pour une valeur de n saisie en entrée, il affiche en sortie la valeur de S n . Réaliser le programme correspondant sur calculatrice. étape 1 TE 19 ; 4 étape 2 13 ;19 étape 3 mot en clair NT mot codé Coder le mot ST en détaillant les étapes. 6 Chiffrement de Hill Autre présentation du procédé de chiffrement de Hill avec des matrices : Le but de l’exercice est d’étudier une méthode de chiffrement publiée en 1929 par le mathématicien et cryptologue américain Lester Hill. On veut coder un mot de deux lettres selon la procédure suivante : 11 3 On donne la matrice A (matrice carrée d’ordre 2). 7 4 x Le mot à coder est remplacé par la matrice colonne X 1 , où x1 est l’entier représentant la première lettre x2 Étape 1 : du mot et x2 l’entier représentant la deuxième, selon le tableau de correspondance qui a été donné auparavant. Chaque lettre du mot est remplacée par un entier en utilisant le tableau ci-dessous : A B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 z • La matrice X est transformée en la matrice colonne Z 1 telle que Y AX . z2 y1 • La matrice Z est transformée en la matrice Y , où y1 est le reste de la division euclidienne de z1 par 26 y2 et y2 le reste de la division euclidienne de z2 par 26. • Les entiers y1 et y2 donnent les lettres du mot codé, selon le tableau de correspondance qui a été donné. N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25 On obtient un couple d’entiers x1 ; x2 où x1 correspond à la première lettre du mot et x2 correspond à la deuxième lettre du mot. Étape 2 : x1 ; x2 est transformé en y1 ; y2 tel que y1 est le reste de la division euclidienne de 11x1 3 x2 par 26 et y2 est le reste de la division euclidienne 7 x1 4 x2 par 26. Étape 3 : y1 ; y2 est transformé en un mot de deux lettres en utilisant le tableau de correspondance donné dans l’étape 1. Exemple : 7 Déterminer le nombre de chiffres de l’écriture en base 10 de 2016 ! (factorielle de 2016). Corrigé Division euclidienne de 9 999 999 999 999 par 222 222 222 222 On a : 1 Division euclidienne de « grands » nombres à l’aide de la calculatrice 9 999 999 999 999 9 999 999 999 999 45, 000... d’où E 45 . 222 222 222 222 222 222 222 222 De plus, 9 999 999 999 999 – 222 222 222 222 45 9 . On rappelle que la division euclidienne d’un entier relatif a par un entier naturel non nul b s’écrit a bq r où q et r sont des entiers relatifs tels que 0 r b . a On a : q E . b Pour chaque question, on peut poser a ...................... et b ...................... . Cela évite d’avoir à écrire des très grands nombres ! Dans chaque cas, on peut : - soit utiliser le rappel ci-dessus ; - soit utiliser directement le programme de division euclidienne sur calculatrice. Division euclidienne de 220 065 par 324 220 065 220 065 679, 2129... (petits points extrêmement importants : le nombre n’est pas décimal et 324 324 220 065 les petits points signifient que l’on a écrit que des décimales exactes) d’où E 679 . 324 On a : Donc on a : 9 999 999 999 999 222 222 222 222 45 9 . Dans la division euclidienne de 9 999 999 999 999 par 222 222 222 222, le quotient est égal à 45 et le reste est égal à 9. Version mal présentée et mal rédigée (Tristan Colin, élève de TS1, le 4 mercredi 4 octobre 2016) : Division euclidienne de 220 065 par 324 q 679 et r 69 Division euclidienne de 987 543 210 par 12 456 789 q 79 et r 3456879 Division euclidienne de 9 999 999 999 999 par 222 222 222 222 q 45 et r 9 Il avait utilisé des lettres majuscules pour q et r (ce qui donnait Q 679 R 69 pour la première division euclidienne). Version sans parler de la partie entière (prise sur la copie de Timothée Savouré élève de TS1 durant l’année scolaire 2015-2016) : Il s’agit d’une version non rédigée (q désigne le quotient et r le reste). Division euclidienne de 220 065 par 324 De plus, 220 065 – 679 324 69 . 220 065 679, 2129... 324 Donc on a : 220 065 679 324 69 . 679 324 219 996 Dans la division euclidienne de 220 065 par 324, le quotient est égal à 679 et le reste est égal à 69. 220 065 – 219 996 69 . Division euclidienne de 987 543 210 par 12 456 789 987 543 210 987 543 210 79, 27750... d’où E 79 . 12 456 789 12 456 789 De plus, 987 543 210 – 12 456 789 79 3 456 879 q 679 r 69 Division euclidienne de 987 543 210 par 12 456 789 On a : 987 543 210 79, 2775096... 12 456 789 Donc on a : 987 543 210 12 456 789 79 3 456 879 . 12 456 789 79 984 086 331 Dans la division euclidienne de 987 543 210 par 12 456 789, le quotient est égal à 79 et le reste est égal à 3 456 879. 987 543 210 – 984 086 331 3 456 879 q 79 r 3 456 879 Division euclidienne de 9 999 999 999 999 par 222 222 222 222 La valeur affichée en sortie est donc 2. 9 999 999 999 999 9 999 999 999 999 45, 000... (attention à ne pas écrire : 45 , Timothée s’était 222 222 222 222 222 222 222 222 trompé ; les petits points sont très importants) Pour n 50 0 Condition u 11 222 222 222 222 45 .... Valeur de u 9 999 999 999 999 – .... 9 . q 45 Étape r 9 1 2 3 4 5 vraie vraie vraie vraie fausse 39 28 17 6 50 La valeur affichée en sortie est donc 6. Pour n 55 2 Algorithme avec boucle et test d’arrêt Étape 0 Condition u 11 Entrée : Saisir n Valeur de u Initialisation : u prend la valeur n 55 1 2 3 4 5 6 vraie vraie vraie vraie vraie fausse 44 33 22 11 0 La valeur affichée en sortie est donc 0. Traitement : Tantque u 11 Faire u prend la valeur u 11 FinTantque Commentaires : 1. La première case est barrée car u n’existe pas quand l’algorithme commence. La condition u 11 n’a donc pas lieu d’être. Sortie : Afficher u 2. Une fois que la condition est fausse, l’algorithme s’arrête. La variable u n’a plus de valeur. On n’écrit donc aucune valeur dans la case. Recopier cet algorithme dans un cadre 3. Le tableau se lit de bas en haut. Étape Dans l’exercice, il n’est pas nécessaire de faire le programme sur calculatrice. 0 Condition u 11 1°) On fait fonctionner l’algorithme « à la main » pour n 35 , n 50 , n 55 . On doit suivre l’algorithme pas à pas. On fait tourner l’algorithme pas à pas. 1 2 3 4 5 vraie vraie vraie vraie faux Valeur de u On adopte la présentation donnée dans l’énoncé grâce à un tableau d’évolution des variables (méthode à retenir quand on doit faire tourner « à la main » un algorithme avec une boucle « Pour » ou « Tantque »). On n’oublie pas de faire une phrase réponse à chaque fois pour donner la valeur de la variable u qui s’affiche en sortie. Pour n 35 4. On a décidé de dénommer les étapes « étape 0 », « étape 1 », « étape 2 » ? Peut-être serait-il préférable d’appeler les rubriques « avant le premier passage dans la boucle », « après le premier passage dans la boucle » (et donc « avant le deuxième passage dans la boucle »), « après le deuxième passage dans la boucle », …, « après le dernier passage dans la boucle »… Version plus courte de rédaction : • Pour n 35 , la valeur finale de u affichée en sortie est 2. Étape 0 Condition u 11 Valeur de u 35 1 2 3 4 vraie vraie vraie fausse 24 13 2 • Pour n 50 , la valeur finale de u affichée en sortie est 6. • Pour n 55 , la valeur finale de u affichée en sortie est 0. Version plus courte mais à éviter (prise sur la feuille de Timothée Savouré, élève de TS1, le jeudi 1er octobre 2015) : • Pour n 35 , u 2 . Commentaires : Les opérations sont plus simples mais il y a plus de calculs (le coût de l’algorithme est plus élevé). Il est possible d’obtenir le quotient en introduisant une variable q initialisée à 0 puis en insérant l’instruction « q prend la valeur q 1 ». • Pour n 50 , u 6 . • Pour n 55 , u 0 . 2°) Pour un entier naturel n quelconque, le nombre de sortie est égal au reste de la division euclidienne de n par 11. Il faudrait normalement démontrer deux points : - la terminaison de l’algorithme (c’est-à-dire que l’algorithme s’arrête) ; - la validation de l’algorithme (preuve de l’algorithme) c’est-à-dire qu’il donne bien le reste de la division euclidienne de n par 11. On peut aussi parler du coût de cet algorithme (comparaison de la performance de cet algorithme par rapport à l’algorithme donné dans le cours). Cet algorithme nécessite beaucoup plus d’opérations que l’algorithme qui consiste à faire une division (et ce, d’autant plus que le nombre est plus élevé). Que se passe-t-il si on donne à n la valeur 9 en entrée ? La condition n 11 n’est pas vérifiée. On sort tout de suite de la boucle. La valeur affichée en sortie est 9. 3 Algorithmes sur les années bissextiles 1°) L’énoncé rappelle le critère de divisibilité par 4 : Un entier naturel est divisible par 4 si et seulement si le nombre formé par ses deux derniers chiffres et divisible par 4. On peut réaliser le programme sur calculatrice (mais l’intérêt est assez limité car il permet seulement d’obtenir le reste de la division euclidienne par 11 donc programme à effacer tout de suite !). Une autre technique consiste à diviser par 2 puis par 2. À mettre en forme : « On reconnaît qu’un entier est divisible par 4 grâce aux deux derniers chiffres. » L’algorithme affiche en sortie un nombre x 0 ;10 . L’année 2014 est non bissextile. L’année 2015 est non bissextile. L’année 2016 est bissextile. L’année 2020 est bissextile. x n 11k où n est l’entier saisi en entrée et k le nombre de boucles effectuées par l’algorithme. On a n 11k x . Donc x est le reste de la division euclidienne de n par 11. 2°) On commence par recopier l’algorithme donné dans l’énoncé puis on le programme sur calculatrice. On utilise les tests de divisibilité étudiés dans le cours (soit avec les fonctions partie entière ou partie décimale de la calculatrice soit avec la fonction reste de division euclidienne de la calculatrice). Programme sur calculatrice TI : : Prompt N :NU : While U 11 3°) Une année N est bissextile si et seulement si on est dans l’un des deux cas suivants : : U – 11 U : End : Disp U - N est divisible par 4 mais pas par 100. Remarque : On n’est pas obligé de mettre deux variables dans ce programme (ni dans l’algorithme). Cependant il est plus commode d’utiliser 2 variables plutôt qu’une pour la lisibilité du programme. - N est divisible par 400 ; Entrée : Saisir N Traitement et sortie : Si 400 | N ou (4 | N et 100 | N )) Alors afficher "année bissextile" Sinon afficher "année non bissextile" FinSi Il s’agit d’un algorithme de comptage ou de dénombrement. 4 L’algorithme utilise 3 variables : n, d, i (la variable i est une variable interne ou locale ; elle n’intervient ni dans l’entrée ni dans la sortie). Nombre de diviseurs positifs d’un entier naturel n * d n nombre de diviseurs positifs de n b) Réaliser le programme correspondant sur calculatrice. On peut écrire d n card k / k | n . c) Après lancement du programme, est affiché le nombre 16. Donc d 1000 16 . Donc 1000 a 16 diviseurs. 1°) Tableau de valeurs On ne peut pas trouver une expression explicite de d n en fonction de n d’où l’intérêt d’avoir un algorithme. n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 d n 1 2 2 3 2 4 2 4 3 4 2 6 2 4 4 5 On verra plus tard dans le chapitre sur les nombres premiers comment calculer le nombre de diviseurs positifs d’un entier naturel non nul à partir de sa décomposition en facteurs premiers. 5 Somme des diviseurs positifs d’un entier naturel Commentaires sur ce tableau : n * S n somme des diviseurs positifs de n On peut compléter ce tableau « à la main » ou en utilisant le programme qui est réalisé dans la question 2°). On observe que certains entiers ont exactement 2 diviseurs positifs : ce sont les nombres premiers. On observe que certains entiers ont exactement 3 diviseurs positifs : ce sont les carrés des nombres premiers. Question supplémentaire possible : Le 3-10-2014 Caractériser les entiers naturels qui admettent exactement 4 diviseurs positifs ou nuls. Il y a les nombres qui s’écrivent comme produit de deux nombres premiers distincts ou comme cube d’un nombre premier. 2°) a) Entrée : Saisir n Initialisation : d prend la valeur 0 Traitement : Pour i allant de 1 à n Faire Si i | n Alors d prend la valeur d 1 FinSi FinPour Sortie : Afficher d On peut écrire S n k. k k|n Entrée : Saisir n Initialisation : S prend la valeur 0 Traitement : Pour i allant de 1 à n Faire Si i | n Alors S prend la valeur S i FinSi FinPour Sortie : Afficher S 6 Étape 1 : ST correspond à x1 ; x2 18 ;19 . Étape 2 : • 11x1 3x2 11 18 3 19 198 57 255 y1 est alors le reste de la division euclidienne de 255 par 26. Comme 255 9 26 21 et que 0 21 26 , on en déduit que y1 21 . • 7 x1 4 x2 7 18 4 19 126 76 202 . Comme 202 7 26 20 et que 0 20 26 , on en déduit que y2 20 . Étape 3 : Le couple 21; 20 correspond au mot VU et donc le mot ST se code en VU. Il est possible de créer un petit programme de codage sur calculatrice. 7 k 2016 log 2016 log1 log 2 log 2016 log k k 1 On peut utiliser un outil en ligne ou couper la somme en deux.