On se propose d’écrire un programme intitulé ‘super’ qui permet de remplir un tableau T par N entiers de quatre chiffres chacun (avec 1 ≤ N ≤ 30) puis d’afficher les nombres super premiers de T.
Sachant que :
- un nombre est dit premier s’il est divisible par 1 et lui-même
- un nombre est dit super premier si à chaque élimination du chiffre de droite, le nombre obtenu reste premier jusqu’à obtenir un nombre premier formé d’un seul chiffre.
Exemple : Si N = 9
T :
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
3004 | 1970 | 3797 | 2356 | 5939 | 8901 | 7133 | 1995 | 9350 |
Le programme affichera : 3797 et 5939
En effet, 3797 sera affiché car
3797 est premier |
et si on enlève 7, le nombre obtenu 379 reste premier |
et si on enlève 9, le nombre obtenu 37 reste premier |
et si on enlève 7, le nombre obtenu 3 reste premier. |
Pour remplir un tableau T de entiers de quatre chiffres chacun et afficher les nombres super premiers, nous allons suivre les étapes suivantes :
1- Remplissage du tableau T : saisir n entiers formés de quatre chiffres (entre 1000 et 9999).
2- Vérification des nombres premiers : Écrire une fonction pour vérifier si un nombre est premier. Un nombre est premier s'il n'a pas de diviseurs autres que 1 et lui-même.
3- Vérification des nombres super premiers : Écrire une fonction pour vérifier si un nombre est super premier. Un nombre est super premier si, en supprimant successivement les chiffres de droite, tous les nombres intermédiaires sont premiers jusqu'à obtenir un nombre premier formé d’un seul chiffre.
4- Affichage des nombres super premiers : parcourir le tableau T et afficher les nombres qui sont super premiers.
Dans cet algorithme, On va utiliser trois fonctions et deux procédures:
Algorithme du programme principal
1 2 3 4 5 6 7 8 |
Algorithme super Debut n<-saisie() Ecrire('remplissage du tableau t') remplir(t,n) Ecrire('le(s) entiers(s) super(s):') recherche_superpremier(t,n) Fin |
Déclaration des objets
Objet | Type / Nature |
n | entier |
t | tableau de 30 entiers |
La fonction saisie
Cette fonction retourne un entier n entre 1 et 30 saisi par l'utilisateur.
1 2 3 4 5 6 7 8 9 10 |
foncttion saisie() Début Ecrire('donner un entier entre 1 et 30') lire (n) Tant que n<1 ou n>30 faire Ecrire('donner un entier entre 1 et 30') lire (n) Fin tant que retourner n Fin |
La procédure remplir
Cette procédure remplit le tableau t de n entiers.
1 2 3 4 5 6 7 |
Procédure remplir(@t:Tab,n:entier) Début Pour i de 0 à n-1 faire Ecrire('donner elt N°',i,':') lire(t[i]) Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
La fonction test_premier
Cette fonction teste si un entier est premier ou non .
1 2 3 4 5 6 7 8 |
Procédure test_premier(x:entier) Début i<-2 Tant que que(x mod i != 0) et (i<= x div 2) faire i<-i+1 Fin tant que retourner (x mod i != 0) Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
x | entier |
La fonction test_super
Cette fonction teste si un entier est super ou non .
1 2 3 4 5 6 7 8 |
Procédure test_super(x:entier) Début ch<-Convch(x); Tant que(test_premier(x)) et (len(ch)>1) faire ch<-effacer(ch,long(ch)-1,long(ch)-1] # elimination du chiffre droite de x x<-int(ch) retourner test_premier(x); Fin |
Déclaration des objets
Objet | Type / Nature |
x | entier |
ch | chaîne des caractères |
La procédure recherche_superpremier
Cette procédure parcourt le tableau T et affiche les nombres qui sont super premiers.
1 2 3 4 5 6 7 8 |
Procédure recherche_superpremier(t,n) Début Pour i de 0 à n-1 faire Si test_superpremier(t[i]) : Ecrire(t[i]) Fin si Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
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 30 31 32 33 34 35 36 37 38 39 |
from numpy import array t=array([int()]*30) def saisie_taille() : n=int(input("donner un entier entre 1 et 30 ")) while(1>n) or (n>30) : n=int(input("donner un entier entre 1 et 30 ")) return n def remplir(t,n): for i in range (n) : t[i]=int(input("donner elt N°"+str(i)+" entre 1000 et 9999:")) while (t[i]<1000) or (t[i]>9999) : t[i]=int(input("donner elt N°"+str(i)+" entre 1000 et 9999:")) def test_premier(x) : i=2 while(x % i != 0) and (i<= x // 2) : i=i+1 return (x % i != 0) def test_superpremier(x): ch=str(x); while(test_premier(x)) and (len(ch)>1) : ch=ch[0:len(ch)-1] # elimination du chiffre droite de x x=int(ch) return test_premier(x); def recherche_superpremier(t,n): for i in range(n) : if test_superpremier(t[i]) : print(t[i]) n=saisie_taille() print('remplissage du tableau t') remplir(t,n) print('le(s) entiers(s) super(s):') recherche_superpremier(t,n) |
Exécution du programme
Pour remplir un tableau d'entiers à partir d'une chaîne de caractères en Python, vous pouvez suivre les étapes suivantes :
1- Découper la chaîne de caractères en sous-chaînes contenant les entiers.
2- Convertir chaque sous-chaîne en entier.
3- Ajouter chaque entier au tableau.
Pour créer une application en Python pour afficher les nombres super premiers.
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'ch' pour entrer des entiers .
QPushButton
nommé 'remplir_bt' pour exécuter le module createTab afin de remplir le tableau à partir de la chaine 'ch'.
QPushButton
nommé 'super_bt' pour exécuter le module recherche_superpremier afin d'afficher les nombres super premiers.
QLabel
nommé 'msg' pour afficher un message d'erreur si ch est vide ou contient des valeurs non numériques .
QLabel
nommé 'tablabel' pour afficher les éléments du tableau.
QLabel
nommé 'liste_super' pour afficher les éléments super premiers du tableau.
Enregistrez le fichier avec l'extension .ui
, par exemple tabtab-2.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 80 81 82 83 84 |
from PyQt5.uic import loadUi from PyQt5 import QtCore, QtGui from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets from numpy import array t=array([int()]*30) app = QApplication([]) windows = loadUi ("tabtab-2.ui") # Fonction qui supprime des espaces de la chaine des carcatères def supprimer_espaces (ch) : while(ch[0]==' '): # elimnier tous les espaces au début de la chaine ch=ch[1:len(ch)] while(ch[len(ch)-1]==' '): # elimnier tous les espaces a la fin de la chaine ch=ch[0:len(ch)-1] while (ch.find(' ')>0): ch=ch.replace(" ", " ") # remplacer les doubles espaces apar un seul espace return ch # Procedure qui remplit un tableau par des entiers a partir d'une chaine des caractère def createTab(): ch = windows.ch.text() global n # taille du tableau if ch=="": windows.msg.setText("Veuillez remplir la chaîne") else: windows.msg.clear() # effacer le message d erreur ch= supprimer_espaces(ch) i=0 j=0 ch1='' # parcourir les caracteres de la chaine while((i<len(ch)) and (('0'<=ch[i]<='9') or (ch[i]==' '))): if ('0'<=ch[i]<='9') : ch1=ch1+ch[i] if ((ch[i]==' ') or (i==len(ch)-1)) : t[j]=int(ch1) ch1='' j=j+1 i=i+1 if (i<len(ch)) : # si la chaine contient des valeurs non numeriques windows.msg.setText("la chaîne contient des valeurs non numériques") else : tab='' n=j for k in range (j) : tab=tab+ 't['+str(k)+']= '+ str(t[k])+ '\n' #afficher les elements du tableau windows.tab_label.setText(tab) def test_premier(x) : i=2 while(x % i != 0) and (i<= x // 2) : i=i+1 return (x % i != 0) def test_superpremier(x): ch=str(x); while(test_premier(x)) and (len(ch)>1) : ch=ch[0:len(ch)-1] # elimination du chiffre droite de x x=int(ch) return test_premier(x); def recherche_superpremier(): liste='' for i in range(n) : if test_superpremier(t[i]) : print(t[i]) liste=liste+str(t[i])+'\n' windows.liste_super.setText(liste) windows.remplir_bt.clicked.connect ( createTab ) windows.super_bt.clicked.connect ( recherche_superpremier) 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