On se propose de concevoir une interface graphique permettant de saisir un nombre N de trois chiffres au minimum, puis d’afficher s’il est premier palindrome.
Un nombre est dit premier palindrome s'il est à la fois premier et palindrome.
Un nombre est dit premier s’il est divisible seulement par 1 et lui-même.
Un nombre est dit palindrome s’il est symétrique, c’est-à-dire qu’il se lit de la même manière de droite à gauche et de gauche à droite.
Exemples :
Pour N = 71317 : N est à la fois un nombre premier et un nombre palindrome.
Le programme affiche : 71317 est premier palindrome
Pour N = 232 : N n’est pas un nombre premier.
Le programme affiche : 232 n’est pas premier palindrome
Pour N = 137 : N n’est pas un nombre palindrome.
Le programme affiche : 137 n’est pas premier palindrome
Pour N = 2514 : N n’est ni un nombre premier ni un nombre palindrome. Le programme affiche : 2514 n’est pas premier palindrome
L’algorithme a pour rôle de :
1- lire un nombre entier N strictement positif qui contient au moins trois chiffres.
2- tester la primalité du nombre, c’est-à-dire vérifier qu’il n’est divisible que par 1 et par lui-même.
3- vérifier si ce nombre est palindrome, c’est-à-dire qu’il peut se lire de la même manière de gauche à droite et de droite à gauche.
4- déterminer si le nombre est à la fois premier et palindrome.
5- afficher un message approprié indiquant que le nombre est un premier palindrome si les deux conditions sont vraies, sinon, qu’il n’est pas un premier palindrome.
Dans cet algorithme, On va utiliser trois fonctions :
1 2 3 4 5 6 7 8 9 |
Algorithme premier_palindrome Debut n<-saisie() Si (premier(n) et palindrome(str(n))) alors Ecrire(n,' est premier palindrome') Sinon Ecrire(n,' est non premier palindrome') Finsi Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
Cette fonction saisit un nombre entier N strictement positif qui contient au moins trois chiffres
1 2 3 4 5 6 7 8 9 10 |
fonction saisie():entier Début Ecrire("donner un nombre>0 forme de 3 chiffres au minimum:")) Lire(n) Tant que (n<100) aire Ecrire("donner un nombre>0 forme de 3 chiffres au minimum:")) Lire(n) Fin tant que retourner n Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
Cette fonction teste la primalité du nombre, c’est-à-dire vérifier qu’il n’est divisible que par 1 et par lui-même.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
fonction premier(n:entier): booleen Début i<-2 Tantque (n mod i !=0) et (i < n div 2) faire i<-i+1 Fin tant que Si (n mod i !=0) alors retourner Vrai Sinon retourner Faux Finsi Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
Cette fonction vérifie si le nombre est palindrome.
1 2 3 4 5 6 7 8 9 10 |
fonction palindrome (ch:chaine): booleen Début i<-0 j<-long(ch)-1 Tant que (i<j) et (ch[i]=ch[j]) faire i<-i+1 j<-j-1 Fin tant que retourner i>=j Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
j | 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 |
def saisie(): n=int(input("donner un nombre>0 forme de 3 chiffres au minimum: ")) while (n<100): n=int(input("donner un nombre>0 forme de 3 chiffres au minimum: ")) return n def premier(n): i=2 while (n %i !=0) and (i<n//2): i=i+1 if (n % i !=0) : return True else: return False def palindrome(ch) : i=0 j=len(ch)-1 while (i<j) and (ch[i]==ch[j]) : i=i+1 j=j-1 return i>=j #programme principal n=saisie() if (premier(n) and palindrome(str(n))): print(n,' est premier palindrome') else: print(n,' est non premier palindrome') |
Exécution du programme :
Pour créer une application en Python et Designer QT afin de saisir un nombre N de trois chiffres au minimum, puis d’afficher s’il est premier palindrome., on va suivre ces étapes:
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLabel
nommé 'msg' pour afficher le resultat du test du nombre
QLineEdit
nommé 'n' pour entrer le nombre N
QPushButton
nommé 'vrifier_bt' pour vérifier si le nombre N est premier palindrome ou non
Enregistrez le fichier avec l'extension .ui
, par exemple nombres_primaires-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 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 78 79 |
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
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