Un nombre est dit pronique s’il est le produit de deux entiers naturels consécutifs.
Exemples : 12 est un nombre pronique car 12=3*4
272 est un nombre pronique car 272=16*17
On se propose d’écrire un programme Python permettant de remplir un tableau T par n entiers positifs formés de 3 chiffres ( avec 2 ≤ n ≤10) et d’afficher tous les nombres proniques du tableau T.
Exemple : Pour n=6 et le tableau T :
132 | 306 | 451 | 122 | 272 | 583 |
Le programme affichera : Les nombres proniques sont : 132 306 272
1- Initialisation :
Créer un tableau T de taille nn pour stocker les nn entiers.
nn est un entier donné (2 ≤ n ≤ 10).
2- Remplir le tableau :
Pour chaque indice i de 0 à n−1 :
Demander à l'utilisateur de saisir un entier de 3 chiffres.
Stocker cet entier dans T[i].
3- Vérifier si un nombre est pronique :
Un nombre x est pronique s'il existe un entier k tel que x=k(k+1).
Pour vérifier si un nombre x est pronique, on teste Si k(k+1)=x.
4- Afficher les nombres proniques :
Parcourir le tableau T:
a) Pour chaque élément du tableau, vérifier s'il est pronique.
b) Si un nombre est pronique, l'afficher.
Dans cet algorithme, on va utiliser deux fonctions et deux procédures:
Algorithme du programme principal
1 2 3 4 5 6 7 |
Algorithme Nombre_premier_sur Debut n<-saisie_taille() Ecrire('remplissage du tableau t') remplir(t,n) afficher_manque(t,n) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
t | tableau de 30 entiers |
La fonction saisie_taille
Cette procédure saisit la taille n du tableau tel que 2 ≤ n ≤ 10
1 2 3 4 5 6 7 8 9 10 |
Procedure saisie_taille(n:entier):entier Début Ecrire("donner un entier entre 2 et 10: ") lire(n) Tant que (n<2) ou (n>10) faire Ecrire("donner un entier entre 2 et 10: ") Lire(n) Fin tant que retourner n Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
La procédure remplir
Cette procédure remplit un tableau de taille n par des entiers positifs formés de 3 chiffres.
1 2 3 4 5 6 7 8 9 10 11 12 |
Procedure remplir(@t:tab,n:entier) Début Pour i de 0 à n faire Ecrire("donner elt N° "+i+"forme de trois chiffres: ") Lire(t[i]) Tant que (t[i]<100) ou (t[i]>999 faire Ecrire("donner elt N° "+i+"forme de trois chiffres: ") Lire(t[i]) Fin tant que Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
La fonction test_pronique
Cette fonction test si un entier est pronique ou non
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Fonction test_pronique(n:entier):booleen Début cp<-2 i<-2 p<-1 Tant que ((i<=n div 2) et (p!=n)) faire p<-1 n1<-n cp<-cp+1 i<-cp p<-1 Pour j de 1 à 2 faire Si (n1 mod i=0) alors n1<- n1 div i p<-p*i i<-i+1 Fin si Fin pour return(p==n) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
cp | entier |
p | entier |
n1 | entier |
La procédure afficher_entier_proniques
Cette procédure parcourt le tableau T et affiche les entiers proniques.
1 2 3 4 5 6 7 8 9 |
Procédure afficher_entier_proniques(t:Tab;n:entier) Début Ecrire('les entiers proniques sont:') Pour i de 0 à n-1 faire Si test_pronique(t[i]) alors 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 40 41 42 43 44 45 46 47 |
from numpy import array t=array([int()]*30) #declaration du tableau des entiers def saisie_taille() : n=int(input("donner un entier entre 2 et 10: ")) while(n<2) or (n>10) : n=int(input("donner un entier entre 2 et 10: ")) return n def remplir(t,n): for i in range (n) : t[i]=int(input("donner elt N° "+str(i)+" positif et forme de trois chiffres: ")) while (t[i]<100 or t[i]>999): t[i]=int(input("donner elt N° "+str(i)+">0 positif forme de trois chiffres: ")) def test_pronique(n): cp=2 i=2 p=1 while ((i<=n // 2) and (p!=n)): p=1 n1=n cp=cp+1 i=cp p=1 for j in range(1,3): if (n1 % i==0): n1=n1 // i p=p*i i=i+1 return(p==n) def afficher_entier_proniques(t,n): print('les entiers proniques sont:') for i in range (n) : if test_pronique(t[i]): print(str(t[i])) #programme principal n=saisie_taille() print('remplissage du tableau t') remplir(t,n) afficher_entier_proniques(t,n) |
Exécution du programme
Pour créer une application en Python pour remplir un tableau T par n entiers > 2 (10 ≤ n ≤ 45) et trier dans l’ordre croissant les éléments premiers sûrs du tableau T suivis du reste des éléments sans tri 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:
QLineEdit
nommé 'ch' pour entrer les entiers > 2.
QPushButton
nommé 'remplir_bt' pour exécuter le module createTab afin de remplir le tableau à partir de la chaine 'ch'.
QLabel
nommé 'tab_label' pour afficher les éléments du tableau T.
QPushButton
nommé 'bt_recherche' pour exécuter le module afficher_entiers_proniques.
QLabel
nommé 'msg' pour afficher les messages d'erreurs
QLabel
nommé 'resultat' pour afficher les nombres proniques
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 85 86 87 88 89 90 91 92 93 94 95 |
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([str]*100) 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 # pour la taille di 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='' test_long=True # parcourir les caracteres de la chaine while((i<len(ch)) and (test_long) 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='' test_long=(100<=t[j]<=999) j=j+1 i=i+1 if (i<len(ch)) or (test_long==False) : windows.msg.setText("La chaine doit contenir des entiers postifs formes de 3 chiffres ") else : if 2<=j<=20: # test du taille du tableau n=j tab='' for k in range (j) : tab=tab+ 't['+str(k)+']= '+ str(t[k])+ '\n' #afficher les elements du tableau windows.tab_label.setText(tab) else: windows.msg.setText("Le nbr des elements doit etre entre 2 et 10") def test_pronique(n): cp=2 i=2 p=1 while ((i<=n // 2) and (p!=n)): p=1 n1=n cp=cp+1 i=cp p=1 for j in range(1,3): if (n1 % i==0): n1=n1 // i p=p*i i=i+1 return(p==n) def afficher_entiers_proniques(): liste='' for i in range (n) : if test_pronique(t[i]): liste=liste+str(t[i])+'\n' windows.resultat.setText(liste) windows.remplir_bt.clicked.connect ( createTab ) windows.bt_recherche.clicked.connect ( afficher_entiers_proniques ) 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