Algorithme nombre premier

Fermé
Xelopante - Modifié le 9 févr. 2020 à 18:04
 Xelopante - 13 févr. 2020 à 09:17
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

jee pee Messages postés 39591 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 avril 2024 9 225
9 févr. 2020 à 18:30
1
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")
1
Je ne savais pas qu'il était possible d'utiliser un booléen de cette manière.
Merci beaucoup
0
yg_be Messages postés 22708 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 471
13 févr. 2020 à 09:08
Dommage de donner ainsi la solution du TP, plutôt que de permettre à l'étudiant d'apprendre par lui-même.
0
Xelopante > yg_be Messages postés 22708 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024
13 févr. 2020 à 09:17
Je suis d'accord, mais c'est toujours mieux que rien je suppose
0