N est un nombre de SIERPINSKI s’il vérifie la propriété suivante : N= K*2i+1 avec i un entier > 0
Exemple : Pour k=3 et pour tout i de 1 à 10, Le programme affiche tous les SIERPINSKI ci-dessous :
N.B : Un nombre est premier s’il est divisible que par 1 et p a lui-même. (1 n’est pas premier)
Ecrire un programme Python qui permet de choisir aléatoirement un entier k de [1,5], et de chercher et d’afficher tous les nombres de SIERPINSKI en variant de 1 à 10, tout en mentionnant le terme « Premier » devant les nombres de SIERPINSKI qui sont premiers comme indiqué dans l’exemple ci-dessus.
1- Initialisation et choix aléatoire de k
:
Générer un entier aléatoire k
dans l'intervalle [1, 5].
2- Boucle pour calculer les nombres de Sierpinski :
Pour i
allant de 1 à 10, calculer les nombres de Sierpinski selon la formule : N=k×2i+1
Pour chaque N
obtenu, vérifier s'il s'agit d'un nombre premier.
3- Fonction pour vérifier si un nombre est premier :
Un nombre N
est premier si :
Il est supérieur à 1.
Il n'est divisible que par 1 et lui-même.
Implémenter une fonction de test de primalité.
4- Affichage des résultats :
Pour chaque nombre de Sierpinski calculé, afficher N
et ajouter "Premier" devant si N
est premier.
Dans cet algorithme, On va utiliser deux fonctions et une procédure :
Algorithme du programme principal
1 2 3 4 5 |
Algorithme Nombre_SIERPINSKI Debut k<-aleatoire(1,5) sierpinski(k) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
k | entier |
La fonction test_premier
Cette fonction teste si un entier est premier ou non.
1 2 3 4 5 6 7 8 |
Fonction test_premier(n:entier):booleen Début i<-2 Tant que (n mod i !=0 ) et (i<= n div 2) faire i<-i+1 Fin tant que retourner (i> n div 2) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
La fonction exposant
Cette fonction retourne l'exposant d'un entier.
1 2 3 4 5 6 7 8 |
Fonction exposant(n:entier,e:entier):entier Début p<-1 Pour i de 1 à e faire p<-p*n Fin pour retourner p Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
p | entier |
La procédure sierpinski
Cette procédure cherche et d’affiche tous les nombres de SIERPINSKI en variant de 1 à 10, tout en mentionnant le terme « Premier » devant les nombres de SIERPINSKI.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Procédure sierpinski(k:entier) Début Ecrire('k i n ') Pour i de 1 à 10 faire Ecrire(k,' ',i,' ') n<-k*exposant(2,i)+1 Ecrire(str(n)) Si (test_premier(n)) faire Ecrire(' pemier'); Fin si Ecrire() Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
i | entier |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import random def test_premier(n): i=2; while (n % i !=0 ) and (i<= n // 2): i=i+1 return (i> n // 2) def exposant(n,e): p=1 for i in range(1,e+1): p=p*n return p def sierpinski(k): print('k i n ') for i in range(1, 11): print(k,' ',i,' ',end='') n=k*exposant(2,i)+1 print(str(n),end=' ') if (test_premier(n)): print(' pemier',end=''); print() k=random.randrange(1,5) sierpinski(k) |
Exécution du programme
Pour créer une application en Python pour choisir aléatoirement un entier k de [1,5], et de chercher et d’afficher tous les nombres de SIERPINSKI en variant de 1 à 10, tout en mentionnant le terme « Premier » devant les nombres de SIERPINSKI qui sont premiers en utilisant Qt Designer pour l'interface graphique, suivez ces étapes :
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QPushButton
nommé 'afficher_bt' pour exécuter le module sierpinski().
QLabel
nommé 'resultat' pour afficher afficher tous les nombres de SIERPINSKI en variant de 1 à 10.
Enregistrez le fichier avec l'extension .ui
, par exemple SIERPINSKI-interface.ui
.
Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
from PyQt5.uic import loadUi from PyQt5 import QtCore, QtGui from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets import random app = QApplication([]) windows = loadUi ("SIERPINSKI-interface.ui") def test_premier(n): i=2; while (n % i !=0 ) and (i<= n // 2): i=i+1 return (i> n // 2) def exposant(n,e): p=1 for i in range(1,e+1): p=p*n return p def sierpinski(): windows.resultat.clear() k=random.randrange(1,5) print('k i n ') liste='k i n \n' for i in range(1, 11): liste=liste+(str(k)+' '+str(i)+' ') print(k,' ',i,' ',end='') n=k*exposant(2,i)+1 print(str(n),end=' ') liste=liste+(str(n)+' ') if (test_premier(n)): liste=liste+(' pemier') print(' pemier',end=''); liste=liste+('\n') print() windows.resultat.setText(liste) windows.afficher_bt.clicked.connect(sierpinski) windows.show() app.exec_() |
Exécution du programme
Vous pouvez voir aussi :
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.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info