Divisibilité par 13 et 7 – Bac pratique – Section informatique – 2020

Bac Info 14-01-26
20 0

Sujet (Algo et programmation - Bac 2020)

Soit "Nombre.txt" un fichier texte contenant des entiers naturels à raison d’un entier par ligne. On se propose de créer deux fichiers textes "Div13.txt" et "Div7.txt" contenant respectivement les valeurs, de "Nombre.txt", qui sont divisibles par 13 et par 7 à raison d’un entier par ligne en se basant sur les deux principes décrits ci-après :

A- Divisibilité par 13

L’algorithme du module Divis13 ci-après permet de vérifier si un nombre N est divisible par 13.

Exemple :

Pour vérifier si le nombre 1612311857 est divisible par 13, on applique la règle de divisibilité par 13 décrite par l’algorithme précédent :

- On regroupe les chiffres du nombre par des blocs de trois chiffres en commençant à partir des unités : 1 | 612 | 311 | 857

- On ajoute alternativement des "–" et des "+" entre les blocs en commençant par placer un "–" pour le premier bloc à droite : 1 – 612 + 311 – 857

- On effectue l’opération ainsi obtenue : 1 – 612 + 311 – 857 = –1157

- La valeur absolue du résultat obtenu (1157) est divisible par 13 donc 1612311857 est divisible par 13. B- Divisibilité par 7

Pour vérifier si un nombre N est divisible par 7 nous proposons la règle de divisibilité suivante :

- Calculer la somme itérée et pondérée des chiffres de N par la série périodique de période 1, 3, 2, −1, −3, −2, c’est-à-dire additionner tous les chiffres de N en multipliant chacun par un chiffre de la période en commençant par le chiffre des unités qui sera multiplié par 1, le chiffre des dizaines sera multiplié par 3, ... . Si la somme est un nombre formé de plus d’un chiffre, on recommence le processus.

Exemple : Pour N = 45286090 la somme itérée et pondérée est égale à 3. En effet :

0 x 1 + 9 x 3 + 0 x 2 + 6 x (−1) + 8 x (−3) + 2 x (−2) + 5 x 1 + 4 x 3 = 10

Comme 10 est composé de plus d’un chiffre alors on recommence le processus avec 10, d’où : 0 x 1 + 1 x 3 = 3

- Un nombre N est divisible par 7 si la somme itérée et pondérée de ses chiffres par la série périodique de période 1, 3, 2, −1, −3, −2 vaut 0 ou 7.

Exemples :

- 6090 est divisible par 7, en effet : 0 x 1 + 9 x 3 + 0 x 2 + 6 x (−1) = 21. Comme 21 est composé de plus d’un chiffre alors on recommence le processus d’où 1 x 1 + 2 x 3 = 7

- 717255 est divisible par 7, en effet : 5 x 1 + 5 x 3 + 2 x 2 + 7 x (−1) + 1 x (−3) + 7 x (−2) = 0

- 45286090 n’est pas divisible par 7, en effet : 0 x 1 + 9 x 3 + 0 x 2 + 6 x (−1) + 8 x (−3) + 2 x (−2) + 5 x 1 + 4 x 3 = 10

Comme 10 est composé de plus d’un chiffre alors on recommence le processus d’où 0 x 1 + 1 x 3 = 3 Comme 3 est différent de 0 et de 7 donc 45286090 n’est pas divisible par 7

Travail demandé :

Ecrire un programme en Python qui permet de :

- Saisir Nb entiers naturels (Nb≥ 5) à enregistrer dans le fichier "Nombre.txt"

- Placer les nombres du fichier "Nombre.txt" qui sont divisibles par 13 dans un fichier nommé "Div13.txt" en utilisant le module Divis13 et les nombres divisibles par 7 dans un fichier nommé "Div7.txt" en appliquant la règle de divisibilité par 7 expliquée ci-dessus.

 

Solution Algorithmique

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

- la fonction saisie()

- la procédure remplir_fichier_nombre()

- la fonction divis13()

- la fonction divis7()

- la procédure remplir_fichiers_div()

- la procédure afficher_fichiers_div()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie

Cette fonction a pour objectif de demander à l’utilisateur de saisir un entier supérieur ou égal à 5 et de s’assurer que la saisie est valide avant de la retourner.

Elle garantit qu’on obtient toujours un entier ≥ 5, évitant ainsi les erreurs liées à une saisie incorrecte.

Déclaration des objets

Objet Type / Nature
n entier

 

La procédure remplir_fichier_nombre

Cette procédure a pour objectif de remplir un fichier texte "Nombre.txt" avec n entiers saisis par l’utilisateur.

Elle permet de créer un fichier texte contenant n entiers saisis par l’utilisateur, chaque entier sur une ligne séparée, prêt à être utilisé pour d’autres traitements (comme les tests de divisibilité).

Déclaration des objets

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

 

La fonction divis7

Cette fonction permet de vérifier si un nombre est divisible par 7 en utilisant une méthode spéciale basée sur une série répétitive [1, 3, 2, -1, -3, -2].

Déclaration des objets

Objet Type / Nature
i entier
s entier
k entier

 

La procédure remplir_fichiers_div()

Cette procédure a pour objectif de lire les nombres du fichier "Nombre.txt" et de créer deux fichiers distincts :

"Div13.txt" → pour les nombres divisibles par 13

"Div7.txt" → pour les nombres divisibles par 7

Déclaration des objets

Objet Type / Nature
f_nbr fichier
f_div13 fichier
f_div7 fichier
nombres chaîne
nombre chaîne

 

La procédure afficher_fichiers_div

Cette procédure permet de lire et d’afficher le contenu d’un fichier texte ligne par ligne.

Déclaration des objets

Objet Type / Nature
f fichier
nombres 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