REPUBLIQUE TUNISIENNE MINISTERE DE L’EDUCATION
Epreuve : Algorithmique
Sections : 4ème Année SI
LYCEE Cité Essalem & Lycée Bouguarnine Date :
14/03/2023
DEVOIR DE SYNTHESE N° 2 Durée :3H - Coefficient : 3
Exercice 1 : 3 pts
Ecrire l'algorithme d'un module permettant de calculer la valeur approchée de π à 10-4 près en
utilisant la formule suivante :
π
Avec n! = 1* 2 * 3 * 4* … * n
Le calcul s'arrête lorsque la différence entre deux termes consécutifs devient inférieure ou égale à
10-4.
Exercice 2 : 5 pts
En mathématiques, un nombre premier équilibré est un nombre premier qui est égal à la
moyenne arithmétique des nombres premiers les plus proches au-dessus et en dessous. Ou,
exprimé de maniére algébrique, pour un nombre premier Pn , avec n, est son indice dans la suite
des nombres premiers.
P n−1+ P n+1
Pn =
2
Exemple :
47+59
53 est un nombre premier équilibré car 53= avec 53 (le 16ème nombre premier), 47( le
2
15ème nombre premier)qui est le plus proche nombre premier au dessous de 53 et 59(le 17 ème
nombre premier) qui est le plus proche nombre premier au dessus de 53.
Travail demandé
1. Ecrire l’algorithme d’une fonction Prem_Equil(n) qui permet de vérifier si un entier N
est un nombre Premier Equilibré ou non.
2. En faisant appel à la fonction Prem_Equil (n), écrire l’algorithme d’une procédure
Remplir (ft, k), permettant de remplir un fichier texte par les k premiers nombres
Premiers Equilibrés
Page 1 sur 4
Exercice 3 : 4.5 pts
1) Soit la fonction INCONNUE suivante :
Fonction INCONNUE(N,X :entier) :
chaine Dé but
Si N=0 alors
Retourner ""
Sinon
Si NMODX>=10 alors
Retourner INCONNUE(N DIV X , X) + chr(55 + N MOD X)
Sinon
Retourner INCONNUE(N DIV X , X)+ convch (N MOD X)
Finsi
Finsi
Fin
Questions :
a- Exécuter à la main la fonction inconnue pour chacun des appels suivants :
INCONNUE(43,16) et INCONNUE(43,2)
b- En déduire le rôle de cette fonction ?
2) La distance de Hamming entre les représentations binaires de deux entiers X et Y est
le nombre des positions correspondant à des bits différents dans les deux écritures en
partant de la droite et après avoir ajusté leurs longueurs.
Exemple :
Pour X = 1001101 et Y =10011, on a : longueur (X)=7 et longueur (Y)=5
On doit donc ajouter 2 zéros à l’extrême gauche de . On aura alors Y = 0010011,
Y 1 0 0 1 1 0 1
X 0 0 1 0 0 1 1
≠ = ≠ ≠ ≠ ≠ =
D’où la distance de Hamming sera égale à 5.
Travail à faire :
En disposant d’un fichier « nombre.dat », un fichier d’enregistrements, où chaque
enregistrement contient les deux entiers NB1 et NB2, écrire un module permettant de remplir
un fichier d’enregistrements « distance_Ham.dat ». Chaque enregistrement contient :
Nb1_bin : nombre binaire correspondant au premier nombre NB1.
Nb2_bin : nombre binaire correspondant au deuxième nombre NB2.
Hamming : distance de Hamming entre Nb1_bin et Nb2_bin
N.B : On peut utiliser la fonction INCONNUE
Page 2 sur 4
Exercice 4 : 7.5 pts
Le cryptage de Vigenère est un système qui utilise une Clé de cryptage C (chaine de 7 lettres
majuscules distinctes) et une matrice carrée M composée de 26 alphabets alignés, décalés de
colonne en colonne d’un caractère.
Indices des colonnes
La matrice est remplie comme l’annexe 1 ci-dessous :
Annexe 1 :
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C C D E F G H I J K L M N O P Q R S T U V W X Y Z B A
D D E F G H I J K L M N O P Q R S T U V W X Y Z C B A
E E F G H I J K L M N O P Q R S T U V W X Y Z D C B A
F F G H I J K L M N O P Q R S T U V W X Y Z E D C B A
G G H I J K L M N O P Q R S T U V W X Y Z F E D C B A
H H I J K L M N O P Q R S T U V W X Y Z G F E D C B A
I I J K L M N O P Q R S T U V W X Y Z H G F E D C B A
J J K L M N O P Q R S T U V W X Y Z I H G F E D C B A
K K L M N O P Q R S T U V W X Y Z J I H G F E D C B A
L L M N O P Q R S T U V W X Y Z K J I H G F E D C B A
M M N O P Q R S T U V W X Y Z L K J I H G F E D C B A
N N O P Q R S T U V W X Y Z M L K J I H G F E D C B A
O O P Q R S T U V W X Y Z N M L K J I H G F E D C B A
P P Q R S T U V W X Y Z O N M L K J I H G F E D C B A
Q Q R S T U V W X Y Z P O N M L K J I H G F E D C B A
R R S T U V W X Y Z Q P O N M L K J I H G F E D C B A
S S T U V W X Y Z R Q P O N M L K J I H G F E D C B A
T T U V W X Y Z S R Q P O N M L K J I H G F E D C B A
U U V W X Y Z T S R Q P O N M L K J I H G F E D C B A
V V W X Y Z U T S R Q P O N M L K J I H G F E D C B A
W W X Y Z V U T S R Q P O N M L K J I H G F E D C B A
X X Y Z W V U T S R Q P O N M L K J I H G F E D C B A
Y Y Z X W V U T S R Q P O N M L K J I H G F E D C B A
Z Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
Indices des lignes
Page 3 sur 4
Travail demandé :
1. Ecrire l’algorithme d’un module qui permet de remplir la matrice de Vigenère M.
N.B : les indices de la matrice sont des lettres alphabétiques majuscules.
2. Ecrire l’algorithme d’un module qui permet de saisir la clé de cryptage C qui est une
chaîne de caractères non vide, de longueur maximale 8 et qui ne contient que des lettres
majuscules distinctes.
3. En disposant d’un fichier texte « source.txt », Écrire un algorithme d’un module qui permet
de remplir le fichier « résultat.txt » par le cryptage de chaque ligne du fichier
« sourcce.txt » par la méthode Vigenère.
Pour crypter une chaine mot, on utilise le principe suivant :
- En dessous de chaque lettre de mot, écrire chaque caractère de la clé C.
- Répéter le motif autant de fois que nécessaire pour obtenir une chaîne CH de même
longueur que mot sans compter les espaces.
- La lettre cryptée correspond à la lettre M [i, j], avec i est la lettre de la chaîne mot et j est
la lettre de la clé de cryptage C
Exemple :
Soit la clé de cryptage : C = "INFOBAC "
La chaîne à crypter : mot ="TP PASCAL ET PYTHON"
Le résultat sera alors « RM UOTCCT RY LZTJWN »
mot T P P A S C A L E T P Y T H O N
CH I N F O B A C I N F O B A C I N
Résultat R M U O T C C T R Y L Z T J W N
L’intersection entre la ligne "T" et la colonne "I" dans la matrice M est : M["T","I"] = "R"
L’intersection entre la ligne "P" et la colonne "N" dans la matrice M est : M["P","N"] =
"M"
L’intersection entre la ligne "P" et la colonne "F" dans la matrice M est : M["P","F"] =
"U"
Etc …
BON TRAVAIL
Page 4 sur 4