Nombre premier et mersenne
-
VVani dernière édition par Noemi
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.
-
@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.
-
VVani dernière édition par Vani
@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∗.
- 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.
-
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=2n−1
Regarde ici :
http://villemin.gerard.free.fr/Wwwgvmm/Decompos/Mersenne.htm
-
VVani dernière édition par
@mtschoon Bonjour,
Oui c'est une erreur de frappe de ma part
-
BBlack-Jack dernière édition par Black-Jack
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é ...