Algorithme nombre premier

Signaler
-
 Xelopante -
Bonjour,

Je suis en train de faire un TP en python qui demande de créer un script avec une fonction, qui demande de rentrer un chiffre et de dire si il est premier ou non.

Voici ce que j'ai écrit :

prems = True

def EsTuPremier(nombre, prems):
    i = 2
    while((i<nombre) and (nombre % i != 0)) :
        i = i+1
    if(i==nombre) :
        prems = True
    else :
        prems = False
    return prems

nombre = int(input("Choisissez un nombre"))
if (nombre == 1):
    print("Le nombre est premier")
else:
    EsTuPremier(nombre, prems)
    if (prems == True):
        print("Le nombre est premier")
    else:
        print("Le nombre n'est pas premier")


J'ai l'impression que ça fonctionne globalement sauf lors de la vérification à la fin qui retourne forcément que le chiffre est premier car le booléen prems revient toujours sur la valeur True.

Quelqu'un aurait une idée pour corriger ça ?

Merci d'avance

2 réponses

Messages postés
28149
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 février 2020
5 939
Bonsoir,

La variable prems est totalement inutile.

def EsTuPremier(nombre):
    i = 2
    while((i<nombre) and (nombre % i != 0)) :
        i = i+1
    return i== nombre

nombre = int(input("Choisissez un nombre"))
if (nombre == 1):
    print("Le nombre est premier")
else:
    if EsTuPremier(nombre):
        print("Le nombre est premier")
    else:
        print("Le nombre n'est pas premier")
Je ne savais pas qu'il était possible d'utiliser un booléen de cette manière.
Merci beaucoup
yg_be
Messages postés
9682
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
532
Dommage de donner ainsi la solution du TP, plutôt que de permettre à l'étudiant d'apprendre par lui-même.
> yg_be
Messages postés
9682
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020

Je suis d'accord, mais c'est toujours mieux que rien je suppose