Nombres premiers particuliers – Bac pratique – Section informatique – 2016

Bac Info 08-01-26
21 0

Sujet (Algo et programmation - Bac 2016)

Dans un contexte arithmétique, on définit les nombres premiers factoriels et les nombres premiers primoriels comme indiqué ci-après.

Un nombre PF est dit premier factoriel s'il vérifie les deux propriétés suivantes :

- PF est un nombre premier

-  et PF s'écrit sous la forme d'un factoriel incrémenté ou décrémenté de 1 (PF F! + 1 ou PF = F! - 1), sachant que le factoriel de F noté F! est égal à F*(F-1)* *1

Exemples :

- 7 est un nombre premier factoriel car 7 est premier et il s'écrit sous la forme 3! + 1.

- 719 est un nombre premier factoriel car 719 est premier et il s'écrit sous la forme 6! -

Un nombre PP est dit premier primoriel s'il vérifie les deux propriétés suivantes :

- PP est un nombre premier

- et PP s'écrit sous la forme d'une primorielle incrémentée ou décrémentée de 1 (PP = P# + 1 ou PP = P# - 1), sachant que la primorielle de P notée P# est égale au produit des nombres premiers inférieurs ou égaux à P.

Exemples :

- 211 est un nombre premier primoriel car 211 est premier et il s'écrit sous la forme 7# + 1 En effet, 7# + 1 211=3*5*7 + 1 = 210 + 1 = 211

- 30029 est un nombre premier primoriel car 30029 est premier et il s'écrit sous la forme 13# - En effet, 13# - 1 = 2*3*5*7*11*13 - 1 = 30030 - 1 = 30029

Travail à faire :

Ecrire un programme en Python intitulé "Fac_Prim" qui permet d'afficher les N premiers nombres premiers factoriels et les N premiers nombres premiers primoriels (avec 2 < N < 5).

 

Solution Algorithmique

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

- la fonction saisie()

- la fonction test_premier()

- la fonction factoriel()

- la fonction test_premier_factoriel()

- la fonction test_premier_primoriel()

- la procédure rechercher_nombres_premier_factoriel()

- la procédure rechercher_nombres_premier_primoriels

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie

Le rôle de cette fonction est de permettre à l’utilisateur de saisir un entier n compris strictement entre deux bornes inf et sup.

1- La fonction saisie(inf, sup) demande à l’utilisateur d’entrer un entier n.

2- Elle vérifie que n appartient à l’intervalle ouvert ] inf , sup [ (c’est-à-dire inf < n < sup). 3- Tant que la valeur saisie n’est pas valide (n ≤ inf ou n ≥ sup), la fonction redemande la saisie. 4- Une fois une valeur correcte entrée, la fonction retourne n.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction test_premier

Le fonction test_premier vérifie si un entier n est un nombre premier en testant sa divisibilité par les entiers compris entre 2 et la moitié de n.

1- On initialise i à 2, car 1 n’est pas considéré comme un diviseur dans le test de primalité.-

2- Cas particulier : Si n = 2, la fonction retourne directement True car 2 est un nombre premier.

3- Sinon :

Le programme teste si n est divisible par un entier i compris entre 2 et n//2.

Tant que i est strictement inférieur à n//2 et que i ne divise pas n, on incrémente i.

À la fin de la boucle :

4- Si n % i != 0, cela signifie qu’aucun diviseur n’a été trouvé → n est premier. Sinon, n n’est pas premier.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction factoriel

Cette fonction permet de calculer et retourner le factoriel d’un entier positif n, noté n!.

1- La variable f est initialisée à 1.

2- Une boucle for multiplie successivement f par tous les entiers de 1 jusqu’à n. À la fin de la boucle, f contient la valeur de n! = 1 × 2 × 3 × … × n.

3- La fonction retourne cette valeur.

Déclaration des objets

Objet Type / Nature
f entier
i entier

 

La fonction test_premier_factoriel

Cette fonction teste si un entier n est un nombre premier factoriel, c’est-à-dire un nombre premier qui peut s’écrire sous la forme F! + 1 ou F! − 1.

1- Test de primalité

La fonction commence par vérifier si n est un nombre premier à l’aide de la fonction test_premier.

Si n n’est pas premier, la fonction retourne immédiatement False.

2- Calcul des factoriels

Si n est premier, la fonction calcule successivement les factoriels F! pour F = 2, 3, 4, ....

À chaque étape, elle vérifie si n est égal à : F! + 1 ou F! − 1

3- Arrêt de la recherche

La boucle s’arrête lorsque le factoriel dépasse n ou lorsque l’une des deux égalités est vérifiée.

Résultat

4- La fonction retourne Vrai si n peut s’écrire sous la forme F! ± 1. Sinon, elle retourne Faux.

Déclaration des objets

Objet Type / Nature
f entier
i entier

 

La fonction test_premier_primoriel

Cette fonction teste si un entier n est un nombre premier primoriel, c’est-à-dire un nombre premier qui peut s’écrire sous la forme P# + 1 ou P# − 1.

1- Vérification de la primalité

La fonction commence par vérifier si n est un nombre premier à l’aide de la fonction test_premier.

Si n n’est pas premier, la fonction retourne immédiatement False.

2- Calcul de la primorielle

Si n est premier, la fonction calcule progressivement la primorielle P#, qui correspond au produit des nombres premiers successifs (2, 3, 5, 7, …).

À chaque étape, la multiplication n’est effectuée que si i est un nombre premier.

3- Test de la condition primorielle

La fonction vérifie si n est égal à : P# + 1 ou P# − 1

La boucle s’arrête lorsque la valeur de la primorielle dépasse n ou lorsque l’égalité est vérifiée.

4- Résultat

La fonction retourne Vrai si n peut s’écrire sous la forme P# ± 1. Sinon, elle retourne Faux.

Déclaration des objets

Objet Type / Nature
p entier
i entier

 

La procédure rechercher_nombres_premier_factoriel

Cette procédure permet de rechercher et d’afficher les n premiers nombres premiers factoriels.

- La procédure affiche d’abord un message indiquant le nombre de valeurs recherchées.

- La variable cp sert de compteur pour le nombre de nombres premiers factoriels trouvés.

- La variable i, initialisée à 3, représente le nombre testé.

- Tant que le compteur cp est inférieur à n :

La procédure teste si i est un nombre premier factoriel à l’aide de la fonction test_premier_factoriel.

Si le test est vrai, i est affiché et le compteur est incrémenté.

La valeur de i est ensuite augmentée pour tester le nombre suivant.

- La recherche s’arrête dès que n nombres premiers factoriels ont été trouvés.

Déclaration des objets

Objet Type / Nature
cp entier
i entier

 

La procédure rechercher_nombres_premier_primoriels

Cette procédure permet de rechercher et d’afficher les n premiers nombres premiers primoriels.

- La procédure affiche d’abord un message indiquant le nombre de valeurs recherchées.

- La variable cp est utilisée comme compteur du nombre de nombres premiers primoriels trouvés.

- La variable i, initialisée à 3, représente le nombre testé.

- Tant que le compteur cp est inférieur à n :

La procédure vérifie si i est un nombre premier primoriel en utilisant la fonction test_premier_primoriel.

Si le test est positif, i est affiché et le compteur est incrémenté.

La valeur de i est ensuite augmentée afin de tester le nombre suivant.

- La recherche s’arrête dès que n nombres premiers primoriels ont été trouvés.

Déclaration des objets

Objet Type / Nature
cp entier
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 Haj Salah - Prof Info