Nombre Rigolo – Bac pratique – Section informatique – 2011

Bac Info 18-12-25
27 0

Sujet (Algo et programmation - Bac 2011)

Un nombre Nb et dit rigolo si la somme de ses chiffres est égale à la somme de tous les chiffres de ses facteurs premiers.
Exemple 1 :

Si Nb = 690, alors Nb est un nombre rigolo. En effet :

■ La somme des chiffres de 690 est : 6 + 9 + 0 = 15

■ Les facteurs premiers de 690 sont : 2, 3, 5 et 23

■ La somme des chiffres des facteurs premiers de 690 est : 2 + 3 + 5 + 2 + 3 = 15

Exemple 2 :

Si Nb =120, alors Nb n'est pas un nombre rigolo. En effet :

■ La somme des chiffres de 120 est : 1 + 2 + 0 = 3

■ Les facteurs premiers de 120 sont : 2, 2, 2, 3 et 5

La somme des chiffres des facteurs premiers de 120 est :.2 + 2 + 2 + 3 + 5 = 10

Travail demandé :

Ecrire un programme Pascal qui permet de :

1- Chercher tous les nombres rigolos dans l'intervalle [M, N] avec M et N, 2 entiers saisis tels que :

2- Stocker les résultats trouvés dans un fichier texte nommé « resultat.txt » tel que : Chaque ligne du fichier contient un nombre rigolo suivi du symbole « = », suivi de ses facteurs premiers séparés par une étoile (« * », symbolisant la multiplication). Pour l'exemple précédent, le nombre 690 sera stocké de la manière suivante : 690=2*3*5*23

3- Afficher le contenu du fichier « resultat.txt ».

Si ce fichier est vide, le programme affichera le message « Il n'y a aucun nombre rigolo ».

Solution Algorithmique

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

- la fonction saisie()

- la fonction test_premier()

- la fonction facteur_premiers()

- la fonction insertion_etoiles_facteurs_premiers()

- la fonction somme_chiffres()

- la procédure remplir_fichier_resultat()

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
m entier
 n 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 facteur_premiers

Cette fonction permet de déterminer la décomposition en facteurs premiers d’un entier n et de la retourner sous forme d’une chaîne de caractères contenant uniquement les facteurs premiers trouvés, sans séparateur.

Elle procède en testant successivement les diviseurs à partir de 2, divise n chaque fois qu’un facteur premier est trouvé, et ajoute ce facteur à la chaîne résultat jusqu’à ce que n devienne égal à 1.

Déclaration des objets

Objet Type / Nature
i entier
ch chaîne

 

La fonction insertion_etoiles_facteurs_premiers

Cette fonction permet de calculer la décomposition en facteurs premiers d’un entier n et de la retourner sous forme d’une chaîne de caractères, dans laquelle les facteurs premiers sont séparés par des étoiles (*).

Elle teste successivement les diviseurs à partir de 2, divise n chaque fois qu’un facteur premier est trouvé, ajoute ce facteur suivi d’une étoile à la chaîne résultat, puis supprime la dernière étoile avant de retourner le résultat final.

Déclaration des objets

Objet Type / Nature
i entier
ch chaîne

La fonction somme_chiffres

Cette fonction permet de calculer et retourner la somme des chiffres d’un nombre représenté sous forme de chaîne de caractères.

Elle parcourt chaque caractère de la chaîne ch, le convertit en entier, puis l’ajoute à une variable somme.

Déclaration des objets

Objet Type / Nature
i entier
somme entier

 

La procédure remplir_fichier_resultat

Cette procédure cherche tous les nombres « rigolos » compris entre m et n et enregistre les résultats dans un fichier texte tout en les affichant à l’écran.

Cette procédure :

1- ouvre le fichier resultat.txt en mode écriture.

2- parcourt tous les entiers entre m et n.

Pour chaque nombre i, teste s’il est rigolo avec les critères ci-dessus.

Si i est rigolo :

Affiche i et sa décomposition en facteurs premiers (avec *) à l’écran.

Écrit cette information dans le fichier.

Si aucun nombre rigolo n’est trouvé, affiche un message correspondant.

3- ferme le fichier.

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