Facteurs premiers – Bac pratique – Section informatique – 2012

Bac Info 20-12-25
163 0

Sujet (Algo et programmation - Bac 2012)

A partir d'un fichier nommé "Nombres.dat" contenant N entiers, formé chacun de P chiffres, on veut former un deuxième fichier nommé "Facteurs.txt" qui contiendra, des chaînes. Chaque chaîne représente la concaténation de la fréquence de chacun des facteurs premiers d'un nombre du fichier "Nombres.dat" suivi du facteur premier lui même.

Exemple :

Pour N = 3 et P = 4 :

En effet :

a) 1912 = 2 *2 *2 *239

La chaîne générée sera "321239" pour dire que 3 est la fréquence du facteur premier 2 et 1 est la fréquence du facteur premier 239.

b) 3525 = 3 * 5 * 5 * 47

La chaîne générée sera "1325147" pour dire que 1 est la fréquence du facteur premier 3, 2 est la fréquence du facteur premier 5 et 1 est la fréquence du facteur premier 47.

Travail à faire :

Ecrire un programme Pascal et l'enregistrer sous le nom FactPrem, permettant :

1- de remplir un fichier nommé "Nombres.dat" par N entiers, formés de P chiffres (avec 2 < N < 100 et 2 < P < 6),

2- de créer, pour chaque entier du fichier "Nombres.dat", une chaîne représentant la concaténation de la fréquence de chacun de ses facteurs premiers suivi du facteur premier lui-même et l'enregistrer dans une ligne d'un fichier texte nommé "Facteurs.txt",

3- d'afficher le contenu du fichier "Facteurs.txt".

 

Solution Algorithmique

Dans cet algorithme, On va utiliser trois fonctions et deux procédures:

- la fonction saisie()

- la fonction saisie_nombre()

- la procédure remplir_fichier_nombres()

- la fonction facteur_premiers()

- la procédure remplir_fichier_facteurs()

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n 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 saisie_nombre

Cette fonction définit une fonction saisie_nombre() dont le rôle est de demander à l’utilisateur de saisir un nombre sous forme de chaîne de caractères, en veillant à ce que cette saisie respecte une contrainte de longueur.

Plus précisément, la fonction :

- demande à l’utilisateur de saisir un nombre ;

- vérifie que la saisie contient au minimum 2 chiffres et au maximum 6 chiffres ;

- redemande la saisie tant que cette condition n’est pas respectée ;

- retourne finalement le nombre valide sous forme de chaîne de caractères.

Déclaration des objets

Objet Type / Nature
nombre chaine

 

La procédure remplir_fichier_nombres

Cette procédure définit la fonction remplir_fichier_nombres(n) dont le rôle est de créer et remplir le fichier texte Nombres.dat avec des nombres saisis par l’utilisateur.

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

- affiche un message indiquant le début du remplissage du fichier

- ouvre le fichier Nombres.dat en mode écriture (le contenu précédent est effacé s’il existe)

- demande à l’utilisateur de saisir n nombres, chacun étant validé par la fonction saisie_nombre() (nombre sous forme de chaîne de 2 à 6 chiffres)

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

- ferme le fichier après la fin de l’écriture

Déclaration des objets

Objet Type / Nature
f fichier
i entier
nombre chaîne

 

La fonction facteur_premiers

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
ch2 chaîne
redondance_chiffre entier

 

La procédure remplir_fichier_facteurs

Le rôle de cette procédure est de lire les nombres stockés dans le fichier Nombres.dat, de calculer leur décomposition en facteurs premiers, puis de stocker le résultat dans le fichier Facteurs.txt.

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

- ouvre le fichier Nombres.dat en mode lecture et le fichier Facteurs.txt en mode écriture

- lit tous les nombres contenus dans Nombres.dat (un nombre par ligne)

- pour chaque nombre lu :

supprime le caractère de fin de ligne ;

convertit le nombre en entier ;

calcule sa décomposition en facteurs premiers à l’aide de la fonction facteur_premiers() ;

affiche cette décomposition à l’écran ;

écrit la décomposition correspondante dans le fichier Facteurs.txt ;

- ferme les deux fichiers après la fin du traitement.

Déclaration des objets

Objet Type / Nature
f_chaine fichier
f_nombre fichier
ch chaîne
nombre chaîne

 

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