RÉPUBLIQUE TUNISIENNE |
Épreuve pratique d’informatique |
|
Durée : 1h |
Coefficient : 0.5 |
|
Sections : Maths, Sciences |
Date : 19 mai 2016 |
Important :
1) Une solution modulaire au problème est exigée. 2) Enregistrez au fur et à mesure votre programme dans le dossier Bac2016 situé à la racine C: en lui donnant comme nom votre numéro d’inscription (6 chiffres). |
Un entier N est dit unitairement parfait s’il est égal à la somme de ses diviseurs unitaires sauf lui-même. On appelle diviseur unitaire d’un entier N, tout entier D qui vérifie les conditions suivantes :
- D est un diviseur de N.
- D et (N Div D) sont premiers entre eux. NB : Deux nombres sont dits premiers entre eux si leur plus grand commun diviseur (PGCD) est égal à 1.
Exemple 1 : Pour N = 36,
N n’est pas un entier unitairement parfait car il n’est pas égal à la somme de ses diviseurs unitaires :
Les diviseurs de 36 |
1 |
2 |
3 |
4 |
6 |
9 |
12 |
18 |
36 DJV diviseur |
36 |
18 |
12 |
9 |
6 |
4 |
3 |
2 |
Test de primalité entre eux |
oui |
non |
non |
oui |
non |
oui |
non |
non |
Les diviseurs unitaires de 36 |
1 |
|
|
4 |
|
9 |
|
|
La somme des diviseurs unitaires de 36 |
14 (≠36) |
Exemple 2 : Pour N = 60
N est un entier unitairement parfait car il est égal à la somme de ses diviseurs unitaires :
Les diviseurs de 60 |
1 |
2 |
3 |
4 |
5 |
6 |
10 |
12 |
15 |
20 |
30 |
60 DJV diviseur |
60 |
30 |
20 |
15 |
12 |
10 |
6 |
5 |
4 |
3 |
2 |
Test de primalité entre eux |
oui |
non |
oui |
oui |
oui |
non |
non |
oui |
oui |
oui |
non |
Les diviseurs unitaires de 60 |
1 |
|
3 |
4 |
5 |
|
|
12 |
15 |
20 |
|
La somme des diviseurs unitaires de 60 |
60 |
|
|
|
On se propose d’écrire un programme Pascal permettant de déterminer et d’afficher tous les nombres unitairement parfaits de l’intervalle [a,b] (avec 2 < a < b < 100). Pour cela, on donne l’algorithme du programme principal suivant :
0) Début UnitParf
1) Répéter
Ecrire ("a = "), Lire (a)
Ecrire ("b- "), Lire (b)
Jusqu’à (2 < a) et (a < b) et (b <100)
2) Proc Afficher (a, b)
3) Fin UnitParf
Travail demandé :
a. Traduire l’algorithme UnitParf en un programme Pascal et ajouter les déclarations nécessaires.
b. Transformer la séquence n°l en un module et apporter les modifications nécessaires dans le programme principal.
c. Développer le module Afficher qui permet d’afficher tous les nombres unitairement parfaits de l’intervalle [a,b].
N.B : On pourra utiliser la fonction Test_Primalité ci-desssous, qui vérifie si deux entiers p et k sont premiers entre eux :
Function Test_Primalite (p, k : Byte) : Boolean;
Begin
While (po k) Do
If p > k Then
p := p-k
Else
k := k-p;
Test_Primalite := (p=l);
End;
Grille d’évaluation :
Questions |
Nombre de points |
a. Traduction de l’algorithme UnitParf en Pascal + Ajout des déclarations nécessaires. b. Transformation de la séquence n°l en un module + Modifications nécessaires dans le programme principal. c. Développement du module Afficher. |
4,5 + 1
|