Etant donné un entier n qui vérifie la propriété suivante : le produit des diviseurs de N sauf lui-même est égal à n.
Exemples :
n=10 vérifie cette propriété car 1*2*5=10
N=10 ne vérifie pas cette propsiété car 1*2*3*4*6=144
Ecrire un programme Python permettant et d’afficher tous les nombres de l’intervalle [a,b] (avec 2 ≤ a < b ≤ 100), vérifiant la propriété donnée ci-dessus.
1- Générer tous les entiers dans l'intervalle : Nous devons examiner tous les nombres entre a et b.
2- Trouver les diviseurs : Pour chaque entier NN, nous allons identifier tous ses diviseurs sauf lui-même. Les diviseurs d'un nombre N sont les nombres d tels que N mod d=0.
3- Calculer le produit des diviseurs : Une fois que nous avons les diviseurs de N, nous calculons leur produit. Attention, il faut exclure N lui-même de ce produit.
4- Vérifier la condition : Si le produit des diviseurs de N sauf lui-même est égal à N, alors N satisfait la propriété.
5- Afficher les résultats : Si un nombre satisfait la propriété, on l'affiche.
Dans cet algorithme, On va utiliser deux fonctions et une procédure :
Algorithme du programme principal
1 2 3 4 5 |
Algorithme produits_diviseurs Debut saisie_ab() afficher(a,b) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
a | entier |
b | entier |
La procédure saisie_ab
Cette procédure saisit deux entiers a et b tel que 2 ≤ a < b ≤ 100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Procedure saisie_ab(): Début Ecrire('donner un entier a entre 2 et 100:') lire (a) Tant que a<2 ou a>100 faire Ecrire('donner un entier a entre 2 et 100:') lire (a) Fin tant que Ecrire('donner un entier b tq "+a+"<b<=100: ') lire (b) Tant que b<a ou b>100 faire Ecrire('donner un entier b tq "+a+"<b<=100: ') lire (b) Fin tant que Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
a | entier |
b | entier |
La fonction produit_diviseurs
Cette fonction calcule le produit des diviseurs de n sauf lui-même.
1 2 3 4 5 6 7 8 9 10 |
Fonction produit_diviseurs(n:entier):entier Début p<-1 Pour i de 1 à n div 2 faire Si (n div i =0) alors p<-p*i Finsi Fin pour retourner p Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
p | entier |
La procédure afficher
Cette procédure affiche les nombres qui vérifient la propriété : "le produit des diviseurs de N sauf lui-même est égal à N".
1 2 3 4 5 6 7 8 |
Procédure affiche(n:entier) Début Pour i de a à b faire Si (i=produit_diviseurs(i)) alors Ecrire(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 |
def saisie_ab() : global a,b a=int(input("donner un entier a entre 2 et 100: ")) while(a<2) or (a>100) : a=int(input("donner un entier a entre 2 et 100: ")) b=int(input("donner un entier b tq "+str(a)+"<b<=100: ")) while(b<a) or (b>100) : b=int(input("donner un entier b tq "+str(a)+"<b<=100: ")) def produit_diviseurs(n): p=1; for i in range(1,(n//2) +1): if (n % i==0): p=p*i return p def afficher(a,b): for i in range(a,b+1): if (i==produit_diviseurs(i)): print(str(i)) # programme principal saisie_ab() afficher(a,b) |
Exécution du programme
Pour créer une application en Python pour afficher tous les nombres de l’intervalle [a,b] (avec 2 ≤ a < b ≤ 100), vérifiant la propriété donnée ci-dessus. 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 affichage().
QLabel
nommé 'msg' pour afficher un message d'erreur
QLabel
nommé 'resultat' pour afficher les nombres
QLineEdit
nommé 'a' pour entrer un entier.
QLineEdit
nommé 'b' pour entrer un entier.
Enregistrez le fichier avec l'extension .ui
, par exemple somme_diviseurs.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 |
from PyQt5.uic import loadUi from PyQt5 import QtCore, QtGui from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets app = QApplication([]) windows = loadUi ("somme_diviseurs.ui") def produit_diviseurs(n): p=1; for i in range(1,(n//2) +1): if (n % i==0): p=p*i return p def affichage(): a = int(windows.a.text()) b = int(windows.b.text()) cp=0 windows.msg.clear() if 2<=a<b<=100 : liste='' for i in range(a,b+1): if (i==produit_diviseurs(i)): liste=liste+str(i)+' ' cp=cp+1 if cp % 10 == 0: liste=liste+'\n' windows.resultat.setText(liste) else: windows.msg.setText('Veuillez saisir a et b tq 2<=a<b<=100') windows.afficher_bt.clicked.connect(affichage) 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