Vous êtes sur la page 1sur 4

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

Vous aimerez peut-être aussi