Nombre Mersenne – Bac pratique – Section informatique – 2011

Bac Info 18-12-25
186 0

Sujet (Algo et programmation - Bac 2011)

Un nombre M est dit "nombre de Mersenne", s'il est défini par M = 2N-1 avec N un nombre premier.

Exemples :

Si M = 31, alors M est un nombre de Mersenne. En effet, il peut s'écrire sous la forme 2^N-1 où N = 5 qui est un nombre premier.

Si M = 255, alors M n'est pas un nombre de Mersenne. En effet, il peut s'écrire sous la forme 2^N-1 où N 8 qui est un nombre premier.

Travail demandé :

Ecrire un programme en Python qui permet de :

1) Déterminer tous les nombres de Mersenne compris dans l'intervalle [A B] avec A et B, 2 entiers saisis tels que 2 < A < B < 50000.

2) Stocker chaque nombre M de Mersenne trouvé, dans une ligne d'un fichier texte intitulé « mersenne.txt » sous la forme M = (2^N) - 1, avec :

• M désigne le nombre de Mersenne
• N désigne le nombre premier qui vérifie M = 2N-1
3) Afficher le contenu du fichier « mersenne.txt ». Si ce fichier est vide, le programme affichera « Il n'y a aucun nombre de Mersenne. »

 

Solution Algorithmique

Dans cet algorithme, On va utiliser trois fonctions et une procédure:

- la fonction saisie()

- la fonction test_premier()

- la fonction test_mersenne()

- la procédure remplir_fichier_mersenne()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
a entier
b entier

 

La fonction saisie

Cette procédure permet de saisir un entier compris strictement entre deux bornes inf et sup, en contrôlant la validité de la saisie.

Plus précisément :

il demande à l’utilisateur d’entrer un entier n tel que inf < n < sup ; si la valeur saisie n’appartient pas à cet intervalle, le programme redemande la saisie jusqu’à obtenir une valeur correcte ; une fois la saisie valide, la fonction retourne l’entier n.

Déclaration des objets

Objet Type / Nature
n chaîne

 

La fonction test_premier

Ce programme permet de tester si un entier n est un nombre premier.

Fonctionnement :

Il cherche un diviseur de n à partir de 2.

Tant que n n’est pas divisible par i et que i ne dépasse pas n // 2, il incrémente i

Si aucun diviseur n’est trouvé, alors n est premier.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction test_mersenne

Ce programme permet de vérifier si un entier m est un nombre de Mersenne.

Fonctionnement :

Il calcule m − 1 et vérifie s’il s’agit d’une puissance de 2.

Il détermine l’exposant i correspondant à cette puissance.

Il teste ensuite si i est un nombre premier en utilisant la fonction test_premier.

Valeur retournée :

- l’exposant i si m est un nombre de Mersenne

- 0 si m n’est pas un nombre de Mersenne.

Déclaration des objets

Objet Type / Nature
m1 entier
m2 entier
i entier

 

La procédure remplir_fichier_mersenne

Cette procédure permet de créer et remplir un fichier texte nommé sms.dat contenant une liste de SMS associés à des numéros de téléphone.

Plus précisément, la procédure remplir_fichier_sms(n) :

1- ouvre (ou crée) le fichier texte sms.dat en mode écriture

2- répète n fois les opérations suivantes

3- saisit un message SMS à l’aide de la fonction saisie_sms()

4- demande à l’utilisateur de saisir un numéro de téléphone

5- écrit dans le fichier une ligne contenant le SMS suivi du numéro de téléphone

6- ferme le fichier après la fin de l’enregistrement

Déclaration des objets

Objet Type / Nature
f fichier
i entier
test_vide booléen

 

Solution en Python

Exécution du programme

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info