RETROGICIEL
C'EST UN PREMIER
RETROGICIEL
C'EST UN PREMIER
⇩. Présentation
En mathématique, un nombre premier est un nombre entier qui ne peut être divisé que par 1 ou par lui-même. S'il est divisé par un autre nombre entier, plus petit que lui, le résultat de cette division, le quotient, ne sera pas un nombre entier.
Par exemple : 6 n'est pas un nombre premier car, s'il est divisé par 2, le quotient est aussi un nombre entier (6:2 = 3).
Par contre 5 est un nombre premier car, s'il est divisé par un nombre plus petit que lui, autre que 1 (c'est-à-dire 2,3,4), le résultat n'est jamais un nombre entier ( 5:2=2,5 ; 5:3=1,666...6 et 5:4=1,25)
Donc, pour définir si un nombre est un premier, il suffit de le diviser par tous les nombres premiers qui les précèdent. Mais si on ne les connaît pas tous, il faut alors le diviser par tous les nombres petits que lui. Heureusement que les ordinateurs adorent faire ce genre de calcul et rapidement de surcroit.
⇩. Consignes
Le programme doit :
demander à l'utilisateur un nombre entier à tester ;
s'assurer que la saisie est bien un nombre entier ;
tester le nombre saisi ;
afficher :
c'est un premier ou ;
ce n'est pas un premier et son diviseur ;
proposer de recommencer ou de quitter.
D'abord, faite-le fonctionner. Ensuite, faite-le beau. Enfin, faite-le performant.
Amusez-vous bien !
Télécharger RETROGICIEL - C'est un premier.
Cette présentation nécessite que Python 3 soit installé sur votre machine.
Après avoir téléchargé le fichier C'est un premier.7z, décompressez-le dans le répertoire de votre choix.
Ouvrez le répertoire qui vient d'être créé.
Lancez le fichier Retrogiciel.py.
Cliquez sur l'onglet RUN et testez le programme.
Créez votre propre script dans un des langages proposés ou un autre de votre choix.
Le répertoire contient aussi :
- Python.py, l'exemple en PYTHON sans tkinter ;
- Tkinter.py, l'exemple en PYTHON avec tkinter ;
- Qb84.bas, l'exemple en QBASIC avec qb64 ;
- Bbc.bas, l'exemple en BBC BASIC avec bbc sdl.
# --- Origine Nerd ---
# --- RETROGICIEL - PYTHON ---
# --- C'est un premier ---
# -*- coding: utf-8 -*-
# --- DÉFINITION DES FONCTIONS PERSONNALISEES ---
# --- Analyse du nombre entier saisie ---
def FNC_Analyse ( Q ) :
# --- Annalyse a saisie ---
kmessage = "est un nombre premier."
for kvaleur in range ( 2 , abs ( Q ) - 1 ) :
if Q % kvaleur == 0 :
kmessage = f"est divisible par { kvaleur }, ce n'est pas un premier."
break
# --- Affichage du résultat ---
print ( Q , kmessage )
print ( )
# --- PRESENTATION ---
print ( "C'est un premier." )
print ( "..." )
# --- BOUCLE PRINCIPALE ---
while True :
# --- Saisie de l'utilisateur ---
kchoix = input ( "Entrez un nombre entier ou [Q] pour quitter ... " )
# --- Sortir du programme ---
if kchoix.upper ( ) == "Q" : break
# --- Controle de la validité de la saisie ---
try : FNC_Analyse ( int ( kchoix ) )
except : print( "\nERREUR DE SAISIES.\nVeuillez saisir 1 nombre entier.\n")
# --- FIN DU PROGRAMME ---
print ( "Au revoir" )
# --- Programme : JFB ---
# --- Mai 2024 ---
# --- Fin ---
Pour mieux comprendre l'exemple en PYTHON sans tkinter.
# --- Origine Nerd ---
# --- RETROGICIEL - TKINTER ---
# --- C'est un premier ---
# -*- coding: utf-8 -*-
# --- IMPORTATION DES MODULES ---
# --- Modules de la bibliothèque standard ---
import tkinter
# --- DÉFINITION DES FONCTIONS PERSONNALISEES ---
# --- Analyse du nombre entier saisie ---
def FNC_Calcul ( ) :
# --- Teste la validité de la saisie ---
kmessage = ""
try : ksaisie = int ( TKV_Saisie.get ( ) )
except : kmessage = "Entrez un nombre entier."
# --- Annalyse a saisie ---
if kmessage == "" :
kmessage = "est un nombre premier."
for kvaleur in range ( 2 , abs ( ksaisie ) - 1 ) :
if ksaisie % kvaleur == 0 :
kmessage = f"est divisible par { kvaleur },\nce n'est pas un premier."
break
LAB_Message [ "text" ] = f"{ TKV_Saisie.get ( ) } { kmessage}"
else :
TKV_Saisie.set ( "" )
LAB_Message [ "text" ] = kmessage
# --- CREATION DE L'INTERFACE GRAPHIQUE ---
# --- Création de la fenêtre principale ---
TKI_Principal = tkinter.Tk ( )
TKI_Principal.title ( "RETROGICIEL - Le nom du programme" )
# --- Création des variable de controle ---
TKV_Saisie = tkinter.IntVar ( )
# --- Création des controles nommées ---
BUT_Quitter = tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy )
BUT_Action = tkinter.Button ( TKI_Principal , text = "Chercher ... " , command = FNC_Calcul )
ENT_Saisie = tkinter.Entry ( TKI_Principal , textvariable = TKV_Saisie , justify = "center" )
LAB_Message = tkinter.Label ( TKI_Principal , height = 3 )
# --- Mise en place des controles (anonymes et nommés) dans la fenêtre principale ---
ENT_Saisie.grid ( row = 0 , column = 0 , sticky = "nesw" )
BUT_Action.grid ( row = 0 , column = 1 , sticky = "nesw" )
BUT_Quitter.grid ( row = 0 , column = 2 , sticky = "nesw" )
LAB_Message.grid ( row = 1 , column = 0 , columnspan = 3 , sticky = "nesw" )
# --- DEBUT DU PROGRAMME ---
TKI_Principal.mainloop ( )
# --- Programme : JFB ---
# --- Septembre 2024 ---
# --- Fin ---
Pour mieux comprendre l'exemple en PYTHON avec tkinter.
' --- Origine Nerd propose pour ---
' --- RETROGICIEL - QB64 ---
' --- C'est un premier ---
' --- DEBUT DU PROGRAMME ---
PRINT "C'EST UN PREMIER."
' --- BOUCLE PRINCIPALE ---
DO
' --- Saisie de l'utilisateur ---
INPUT "Entrez un nombre entier ou 0 pour quitter "; knombre&
IF knombre& = 0 THEN EXIT DO
' --- Traitement ... ---
kresultat& = FNC_Analyse&(knombre&)
PRINT STR$(knombre&);
IF kresultat& = 0 THEN
PRINT " est un nombre premier."
ELSE
PRINT " est divisible par"; STR$(kresultat&); ", ce n'est pas un nombre premier."
END IF
' --- Bouclage du programme ---
PRINT ""
LOOP WHILE 1 = 1
' --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
' --- DEFINITION DES FONCTIONS PERSONNALISEES ---
' --- Analyse du nombre saisi ---
FUNCTION FNC_Analyse& (Q&)
kdiviseur& = 0
FOR kvaleur& = 2 TO (Q& - 1)
IF Q& MOD kvaleur& = 0 THEN
kdiviseur& = kvaleur&
EXIT FOR
END IF
NEXT kvaleur&
FNC_Analyse& = kdiviseur&
END FUNCTION
' --- Programme : JFB ---
' --- Septembre 2023 ---
' --- Fin ---
Pour mieux comprendre l'exemple en QB64.
REM --- Origine Nerd propose pour ---
REM --- RETROGICIEL - BBC BASIC ---
REM --- C'est un premier ---
REM --- DEBUT DU PROGRAMME ---
PRINT "C'EST UN PREMIER."
REM --- BOUCLE PRINCIPALE ---
REPEAT
REM --- Saisie de l'utilisateur ... ---
INPUT "Entrez un nombre entier ou 0 pour quitter "; knombre%
IF knombre% = 0 THEN EXIT REPEAT
REM --- Traitement ... ---
PROC_Analyse
UNTIL FALSE
REM --- FIN DU PROGRAMME ---
PRINT "Au revoir."
END
REM --- DEFINITION DES FONCTIONS PERSONNALISEES ---
REM --- Analyse du nombre saisi ---
DEF PROC_Analyse
kresultat$ = " est un premier."
FOR kvaleur% = 2 TO ABS ( knombre% ) - 1
IF knombre% MOD kvaleur% = 0 THEN
kresultat$ = " est divisible par " + STR$(kvaleur%) + " ce n'est pas un premier."
EXIT FOR
ENDIF
NEXT kvaleur%
PRINT STR$(knombre%) ; kresultat$
ENDPROC
REM --- Programme : JFB ---
REM --- Septembre 2024 ---
REM --- Fin ---
Pour mieux comprendre l'exemple en BBC BASIC.