Nombre premier et mersenne


  • V

    Bonjour, je suis bloquée sur mon dm de maths pourriez-vous m'aider s'il-vous-plaît ?

    J'ai tenté de compléter le programme ci -joint

    Le problème c'est que quand je le teste il marche pour les nombres premiers inférieurs à 100 mais il considère que 1 est premier alors que non et je ne sais pas trop comment faire pour changer cela

    Lien supprimé par la modération du forum.


  • N
    Modérateurs

    @Vani Bonsoir,

    Le scan ou un lien de l'énoncé de l'exercice est interdit sur ce forum. Seuls les scans de schémas, graphiques ou figures sont autorisés.
    Écris l'énoncé, tes éléments de réponse et indique la question qui te pose problème. Tu obtiendras alors des pistes de résolution.

    Le scan ou le lien va être supprimé par la modération du site.


  • V

    @Noemi Bonjour,

    Désolé je n'était pas au courant de cela, je vous l'écris donc ci-dessous avec l'énoncé :
    Def premier (n):
           c=0
           for k in range (2,sqrt(n))
                 r=n%k
                 if r==0
                      c=c+1
    if c!=1:
        return (n,"est premier ")
    else:
        return (n,"n'est pas premier")

    (en gras ce qui était à compléter), dans l'algorithme , la fonction premier teste si un nombre est premier.

    On appelle nombres de mersenne, les nombres MnMnMn de la forme Mn=2nMn=2^nMn=2n avec n appartenant à N∗N^*N.

    1. Utiliser l'algorithme précédent pour déterminer les nombres Mn premiers pour 0《 n《20. Que remarque-t-on si n est composé ? Si n est premier ?

    Et donc comme je le disais dans le message précédent, le problème c'est que je n'arrive pas à faire en sorte que le programme ne considère pas 1 comme un nombre premier et du coup je suis bloquée pour la suite.


  • mtschoon

    Bonjour,

    @Vani , je suis fort surprise sur la définition des nombres de Mersenne que tu donnes....

    Par définition : Mn=2n−1M_n=2^n-1Mn=2n1

    Regarde ici :
    http://villemin.gerard.free.fr/Wwwgvmm/Decompos/Mersenne.htm


  • V

    @mtschoon Bonjour,

    Oui c'est une erreur de frappe de ma part


  • B

    Bonjour,

    Outre l'erreur mentionnée sur les nombres de Mersenne ...

    Ta question n'a rien à voir avec ceux-ci.
    Le programme "essaie" uniquement de tester si un nombre est premier.

    Réfléchis à ceci :

    def premier(n) :   
     m = int(n**(1/2))
     c=0
     r=0
     for k in range (2,m + 1) :
          r=n%k
          if r==0 :
              c=c+1
     if (c==0 and n>1):
        return (n,"est premier ")
     else:
        return (n,"n'est pas premier")       
    
    for i in range(0,30):        
      print(premier(i))
    

    Remarque, mon compilateur Python n'inclut pas le "sqrt" et j'ai donc fait sans.
    Mais si ton compilateur comprend le "sqrt" on peut évidemment l'utiliser.

    Remarque :
    Ce programme est inutilement compliqué, il peut être facilement abrégé ...


Se connecter pour répondre