Solution Algorithmique
Dans cet algorithme, On va utiliser quatre fonctions et une procédure:
Algorithme du programme Principal
|
Algorithme nombre_primaire Debut n<-saisie_entier('n',10,50) m<-saisie_entier('m',n+1,200) chercher(n,m) Fin |
Déclaration des objets
Objet |
Type / Nature |
m |
entier |
n |
entier |
La fonction saisie_entier
Cette fonction saisit un entier entre deux bornes a et b
|
fonction saisie_entier(nom_variable:chaine;a:entier;b:entier):entier Début Ecrire("donner "+nom_variable+" entre "+a+" et "+b+": "") Lire(n) Tant que n<a ou n>b faire Ecrire("donner "+nom_variable+" entre "a+" et "+b+": ") Lire(n) Fin tant que retourner n Fin |
Déclaration des objets
Objet |
Type / Nature |
n |
entier |
La fonction puissance
Cette fonction calcule et retourne la valeur d’un entier A élevé à la puissance B ( A et B deux entiers positifs).
|
Fonction Puissance(A, B : Entier) : Entier Début P<-1 Pour K de 1 à B Faire P <- P * A Fin Pour Retourner P Fin |
Déclaration des objets
Objet |
Type / Nature |
P |
entier |
La fonction premier
Cette fonction vérifie si un entier donné est premier ou non
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
Fonction premier(x:entier) : entier DEBUT Si x=1 alors retourner Faux Sinon Si x=2 alors retourner Vrai Sinon test<-Vrai k<-2 Tant que test et (k<= x //2) faire Si x div k = 0 alors test<-Faux Sinon k=k+1 Fin tant que retourner test Fin si FIN |
Déclaration des objets
Objet |
Type / Nature |
k |
entier |
test |
booleen |
La fonction verifier_primaire
Cette fonction vérifie si un entier est primaire.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Fonction verifier_primaire(p:entier):booleen DEBUT x<-1 k<-2 Tant que puissance(x,k)<p faire x<-x+1 Tant que puissance(x,k)<p faire k<-k+1 Si puissance(x,k)>p alors k<-2 Fin si Fin tant que Fin tant que Si (p=puissance(x,k)) et premier(x) alors retourner Vrai Sinon retourner Faux Fin si FIN |
Déclaration des objets
Objet |
Type / Nature |
x |
entier |
k |
entier |
La procédure chercher
Cette procédure afficher tous les nombres primaires compris entre N et M
|
Procedure chercher(m:entier;n:entier) DEBUT Ecrire('Les nombre(s) primaire(s) sont ') Pour i de n à m faire Si verifier_primaire(i) alors Ecrire(i) Fin si Fin pour FIN |
Déclaration des objets
Objet |
Type / Nature |
i |
entier |
Solution en Python
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 47 48 49 50 51 52 53 54 55 56
|
def saisie_entier(nom_variable,a,b): n=int(input("donner "+nom_variable+" entre "+str(a)+" et "+str(b)+": ")) while (n<a) or (n>b) : n=int(input("donner "+nom_variable+" entre "+str(a)+" et "+str(b)+": ")) return n def puissance(a,b): p=1 for k in range(1,b+1): p=p*a return p def premier(x): if x==1 : return False elif x==2 : return True else : test=True k=2 while test and (k<= x //2) : if x % k ==0 : test=False else: k=k+1 return test def verifier_primaire(p): x=1 k=2 while puissance(x,k)<p : x=x+1 while puissance(x,k)<p: k=k+1 if puissance(x,k)>p: k=2 if (p==puissance(x,k)) and premier(x) : return True else: return False def chercher(n,m): print('Les nombre(s) primaire(s) sont ') for i in range(n,m+1): if verifier_primaire(i) : print(i,end=" - ") #programme principal n=saisie_entier('n',10,50) m=saisie_entier('m',n+1,200) chercher(n,m) |
Exécution du programme:
Solution en Python et Designer QT
Pour créer une application en Python et Designer QT qui cherche et affiche tous les nombres primaires compris entre N et M, on va suivre ces étapes:
1- Créer l'interface graphique avec Qt Designer
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'm' pour entrer un nombre m
QLineEdit
nommé 'n' pour entrer un nombre n
QLabel
nommé 'msg' pour contenir les messages d'erreur et la liste des nombres primaires entre M et N.
QPushButton
nommé 'affiche_bt' pour recherche et la liste des nombres primaires entre M et N
Enregistrez le fichier avec l'extension .ui
, par exemple nombres_primaires-interface.ui
.
2- Créer le script Python pour l'application
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
from PyQt5.uic import loadUi from PyQt5.QtWidgets import QApplication app = QApplication([]) windows = loadUi ("nombres_primaires-interface.ui") def puissance(a,b): p=1 for k in range(1,b+1): p=p*a return p def premier(x): if x==1 : return False elif x==2 : return True else : test=True k=2 while test and (k<= x //2) : if x % k ==0 : test=False else: k=k+1 return test def verifier_primaire(p): x=1 k=2 while puissance(x,k)<p : x=x+1 while puissance(x,k)<p: k=k+1 if puissance(x,k)>p: k=2 if (p==puissance(x,k)) and premier(x) : return True else: return False print('Les nombre(s) primaire(s): ') for i in range(n,m+1): if verifier_primaire(i) : print(i,end=" - ") def play(): windows.msg.clear() m = int(windows.m.text()) n = int(windows.n.text()) if 10<=n<=50 and n<m<=200 : resultat='Les nombre(s) primaire(s): ' for i in range(n,m+1): if verifier_primaire(i) : resultat=resultat+str(i)+'-' if resultat!= 'Les nombre(s) primaire(s): ' : windows.msg.setText(resultat) else: windows.msg.setText("Aucun nombre primaire entre "+str(n)+" et "+str(m)) else: windows.msg.setText("Veuiller respecter 10<=N<=50 and N<M<=200") windows.afficher_bt.clicked.connect(play) windows.show() app.exec_() |
Exécution du programme
Vous pouvez voir aussi :