Un nombre N est dit lisse lorsque son plus grand diviseur premier est inférieur ou égal à la racine carrée du nombre N.
Exemples :
- N = 60, les diviseurs de 60 sont : 1, 2, 3, 4, 5, 6, 10, 12, 15, 30 et 60. Son plus grand diviseur premier est 5 et puisque 5 √60=7.746…, donc 60 est un nombre lisse.
- N = 49, les diviseurs de 49 sont : 1, 7 et 49. Son plus grand diviseur premier est 7 et puisque 7 √49=7 donc 49 est un nombre lisse.
- N = 22, les diviseurs de 22 sont : 1, 2, 11 et 22. Son plus grand diviseur premier est 11 et puisque 11 > √22=4.690…, donc 22 n’est pas un nombre lisse.
Pour vérifier si un entier naturel N (N > 1) est un nombre lisse ou non, on propose un algorithme et un programme Python.
Dans cet algorithme, On va utiliser deux fonctions et une procédure :
Algorithme du programme Principal
1 2 3 4 5 |
Algorithme nombre_lisse Debut n<-saisie_entier() verif_lisse(n) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
La fonction saisie_entier
Cette fonction saisit un entier > 1.
1 2 3 4 5 6 7 8 9 10 |
fonction saisie_entier():entier Début Ecrire("donner un entier >= 2) Lire(n) Tant que (n<2) faire Ecrire("donner un entier >= 2) Lire(n) Fin tant que retourner n Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
La fonction verif_premier
Cette fonction vérifie si un entier est premier.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
fonction verif_premier(n:entier):booleen Début Si (n>2) alors i<-2 # recherche des diviseurs possibles Tant que (i<(n div 2)) et (n mod i!=0) alors i<-i+1 Fin tant que retourner (n mod i!=0) Sinon si n=2 alors return Vrai Fin si Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
La procédure verif_lisse
Cette prcédure vérifie si un nombre est un nombre lisse et affiche le résultat de la vérification..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Procedure verif_lisse(n:entier) Début x<-1 Si verif_premier(n)=Faux alors Pour i de 2 à (n div 2)+1) alors Si (n mod i =0) et verif_premier(i) alors x<-i Fin si Fin pour # En cas de l'existance de plus grand premier diviseur # verifier s'il est <= racine carre de n Si x!=-1 and x<=racine_carre(n) alors Ecrire(x+' est plus grand diviseur premier de '+n) Ecrire(n+' est un nombre lisse') Sinon Ecrire(n+" n'est pas un nombre lisse") Fin si Sinon Ecrire(n+" n'est pas un nombre lisse") Fin si Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
x | 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 |
from math import * def saisie_entier(): n=int(input("donner un entier >1: ")) while (n<2): n=int(input("donner un entier >1: ")) return n def verif_premier(n): if (n>2): i=2 # recherche des diviseurs possibles while (i<(n//2)) and (n % i!=0): i=i+1 return (n % i!=0) elif n==2: return True def verif_lisse(n): x=-1 if verif_premier(n)==False : for i in range(2,(n//2)+1): if (n % i ==0) and verif_premier(i) : x=i # En cas de l'existance de plus grand premier diviseur # verifier s'il est <= racine carre de n if x!=-1 and x<=sqrt(n): print(str(x)+' est plus grand diviseur premier de '+str(n)) print(str(n)+' est un nombre lisse') else : print(str(n)+" n'est pas un nombre lisse") else: print(str(n)+" n'est pas un nombre lisse") #programme principal n=saisie_entier() verif_lisse(n) |
Exécution du programme:
Pour créer une application en Python et Designer QT qui saisit un nombre >1 et vérifie s'il est un nombre lisse , on va suivre ces étapes:
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'n' pour entrer un entier >2.
QPushButton
nommé 'verifier_bt' pour vérifier si n est un nombre lisse
QLabel
nommé 'msg' pour afficher des messages d'erreur et le résultat de la vérification du nombre.
Enregistrez le fichier avec l'extension .ui
, par exemple nombre_lisse-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 |
from PyQt5.uic import loadUi from PyQt5.QtWidgets import QApplication from math import * app = QApplication([]) windows = loadUi ("nombre_lisse-interface.ui") def verif_premier(n): if (n>1): i=2 # recherche des diviseurs possibles while (i<(n//2)) and (n % i!=0): i=i+1 return (n % i!=0) elif n==2: return True def play(): windows.msg.clear() n = int(windows.n.text()) if n > 2 : x=-1 if verif_premier(n)==False : for i in range(2,(n//2)+1): if (n % i ==0) and verif_premier(i) : x=i # En cas de l'existance de plus grand premier diviseur # verifier s'il est <= racine carre de n if x!=-1 and x<=sqrt(n): resultat_test=str(x)+' est plus grand diviseur premier de '+str(n)+'\n' resultat_test=resultat_test+ str(n)+' est un nombre lisse' else : resultat_test=str(n)+" n'est pas un nombre lisse" else: resultat_test=str(n)+" n'est pas un nombre lisse" windows.msg.setText(resultat_test) else: windows.msg.setText(" Veuillez introduire un nombre > 1 ") windows.verifier_bt.clicked.connect(play) 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