Laurentvidal.fr vous aide à trouver des réponses précises à toutes vos questions grâce à une communauté d'experts chevronnés. Obtenez des réponses rapides à vos questions grâce à un réseau de professionnels expérimentés sur notre plateforme de questions-réponses. Obtenez des réponses immédiates et fiables à vos questions grâce à une communauté d'experts expérimentés sur notre plateforme.

Bonsoir,
il fau que j'écrive une fonction qui teste si un nombre est premier ou non mais je ne sais pas du tout comment m'y prendre. pourriez vous m'aider svp

Voici la consigne :
Le but de cet exercice est d’écrire une fonction qui teste si un nombre est premier ou non. Ceci permet d’étudier les alternatives dans les boucles ainsi que les sorties anticipées de fonction.
On rappelle qu’un entier naturel n est dit premier s’il n’existe aucun entier naturel autre que 1 et n lui-même qui le divise.

Spécification: Écrire une fonction premier(n) qui renvoie true si le nombre n est premier, False sinon.
On considère que n est un entier supérieur ou égal à 2.
Par convention, 1 n’est pas un nombre premier.

def premier(n):
"""
documenter la fonction
"""

Ecrire 3 assertions pour vérifier votre programme

merci bcp à ceux qui prendront le temps de m'expliquer

Sagot :

Bonsoir,

Il te suffit de vérifier que chaque entier dans [2, n-1] ne divise pas n pour montrer que n est premier sinon n n'est pas premier.

def premier(n):

  premier = True #On suppose que n est premier tant qu'on n'a pas prouvé le contraire.

  for i in range(2, n): #Pour i allant de 2 à n exclut.

     if n%i == 0: #Si le reste de la division euclidienne n / i est égal à 0 donc que i divise n.

        premier = False

  return premier

Si tu as le droit de mettre plusieurs return (interdit pour les CPGE, autorisé pour les lycéens), on peut aussi écrire:

def premier(n):

  for i in range(2, n): #Pour i allant de 2 à n exclut.

     if n%i == 0:

        return False

  return True

L'avantage ici, c'est que si on trouve un nombre qui divise n on s'arrête directement (on ne continu pas la boucle jusqu'à n-1).

Autre méthode:

def premier(n):

  premier = True

  for i in range(2, n):

     if n%i == 0:

        premier = False

        break #On interrompt la boucle (Pas aimé par les professeurs en général)

  return premier

Si le sujet t'intéresse, je te propose de regarder la page Wikipédia sur le Crible d'Ératosthène qui permet de créer la liste des nombres premiers inférieurs à un entier n sans avoir à tester les nombres un par un pour voir s'ils sont premiers ou non.

Bonne journée,

Thomas

Merci de votre passage. Nous nous engageons à fournir les meilleures réponses à toutes vos questions. À bientôt. Merci d'utiliser notre service. Nous sommes toujours là pour fournir des réponses précises et à jour à toutes vos questions. Nous sommes ravis de répondre à vos questions sur Laurentvidal.fr. N'oubliez pas de revenir pour en savoir plus.