Nombres circulaires – Bac pratique – Section informatique – 2012

Bac Info 21-12-25
16 0

Sujet (Algo et programmation - Bac 2012)

Un nombre premier N est dit circulaire s'il vérifie la propriété suivante : chacune des rotations de ses chiffres d'un élément vers la droite, forme à son tour un nombre premier.

Exemples :

- Si N = 719, N est un nombre premier circulaire car 719, 971 et 197 sont des nombres premiers, avec :

971 est le nombre obtenu après une rotation des chiffres de 719 d'un élément vers la droite,

et 197 est le nombre obtenu après une rotation des chiffres de 971 d'un élément vers la droite.

- Si N = 23, N n'est pas un nombre premier circulaire car il est premier mais 32 ne l'est pas.

- Si N = 6102, N n'est pas un nombre premier circulaire car il n'est pas premier.

Travail à faire :

Ecrire un programme Python et l'enregistrer sous le nom PremCirc, permettant :

de chercher tous les nombres premiers circulaires se trouvant dans un intervalle [p,ce (avec p et q sont deux entiers donnés tels que 10 < p < q < 20000) et les sauvegarder dans un fichier intitulé "Circul.dat".

d'afficher le contenu du fichier "Circul.dat".

 

Solution Algorithmique

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

- la fonction saisie()

- la fonction test_premier()

- la fonction test_circulaire()

- la procédure remplir_fichier_circul()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
p entier
q entier

 

La fonction saisie

Cette fonction permet de saisir un entier n compris strictement entre deux bornes inf et sup.

Plus précisément :

Elle demande à l’utilisateur de saisir une valeur entière n.

Elle vérifie que n appartient à l’intervalle ]inf , sup[.

Tant que la valeur saisie est inférieure ou égale à inf ou supérieure ou égale à sup, la saisie est redemandée.

Lorsque la valeur est correcte, la fonction la retourne.

Déclaration des objets

Objet Type / Nature
n chaîne

 

La fonction test_premier

La fonction test_premier(n) a pour rôle est de vérifier si un entier n est un nombre premier.

Plus précisément, la fonction :

- teste les diviseurs possibles de n à partir de 2 ;

- cherche un diviseur tant que n n’est pas divisible par i et que i ne dépasse pas la moitié de n ;

- conclut que n est premier si aucun diviseur n’a été trouvé ;

- retourne Vrai si n est premier et Faux dans le cas contraire.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction test_circulaire

Ce programme définit la fonction facteur_premiers(n) dont le rôle est de décomposer un entier n en facteurs premiers et de retourner cette décomposition sous forme d’une chaîne de caractères.

Plus précisément, la fonction :

- teste successivement les diviseurs entiers à partir de 2 ;

- décompose n en facteurs premiers en divisant n chaque fois qu’un diviseur est trouvé ;

- compte le nombre de répétitions (puissance) de chaque facteur premier ;

- construit une chaîne représentant la décomposition sous la forme : nombre_d’occurrences suivi du facteur (exemple : 2² × 3 devient "223" ou 12 = 2² × 3¹ devient "2231") ;

- retourne la chaîne finale contenant toute la décomposition.

Déclaration des objets

Objet Type / Nature
i entier
ch chaîne
test booleen
ch2 chaîne

 

La procédure remplir_fichier_circul

La procédure remplir_fichier_circul(p, q) a pour rôle est de déterminer et enregistrer tous les nombres premiers circulaires compris entre deux entiers p et q.

Plus précisément, cette procédure :

- affiche un message indiquant le début du remplissage

- ouvre le fichier Circul.dat en mode écriture

- parcourt tous les entiers de p à q (bornes incluses)

- teste pour chaque entier s’il est premier circulaire à l’aide de la fonction test_circulaire()

- affiche chaque nombre premier circulaire trouvé

- écrit chaque nombre premier circulaire dans le fichier, un nombre par ligne

- ferme le fichier après la fin du traitement

Déclaration des objets

Objet Type / Nature
f fichier
i entier

 

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-Prof Info