TS spé Exercices sur les algorithmes liés à la divisibilité et à la

publicité
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
:NU
: 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.
Téléchargement