Plus grand diviseur premier
sk_
Messages postés
15
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je dois écrire une fonction qui renvoie le plus grand diviseur premier du nombre choisi. pour ca, j'ai d'abord fait une fonction pour determiner si le nombre est premier ou pas:
ensuite j'ai fait ma deuxième fonction:
apres, le problème, se trouve au niveau du while. quand j'ai mis while n%i !=0, la variable n prend la valeur du nouveau alors qu'il devrait prendre la valeur du n initial.
par exemple, si je mets
ca va verifier d'abord si 10 est premier. et puisque ce n'est pas le cas, le programme enlevera 1à 10 jusqu'à que n soit premier(7).
et pour " n%i!=0", n sera = à 7. alors au lieu de vérifier si 10 est divisible par 7 et d'enlever 1 à 7 jusqu'à que ce soit le cas(5), il va voir si 7 est divisible par 7.
Est ce quèil existe une instruction pour reprendre la valeur initiale de n(10) au lieu d'utiliser la nouvelle valeur de n(7).
merci
def est_premier(x):
i= 2
while i < x and x % i != 0 :
i = i + 1
if i == x :
return True
else:
return False
ensuite j'ai fait ma deuxième fonction:
def plus_grand_diviseur_premier(n):
for i in range(1,n+1):
while est_premier(n)==False and n%i!=0:
n=n-1
return n
apres, le problème, se trouve au niveau du while. quand j'ai mis while n%i !=0, la variable n prend la valeur du nouveau alors qu'il devrait prendre la valeur du n initial.
par exemple, si je mets
def plus_grand_diviseur_premier(10),
ca va verifier d'abord si 10 est premier. et puisque ce n'est pas le cas, le programme enlevera 1à 10 jusqu'à que n soit premier(7).
et pour " n%i!=0", n sera = à 7. alors au lieu de vérifier si 10 est divisible par 7 et d'enlever 1 à 7 jusqu'à que ce soit le cas(5), il va voir si 7 est divisible par 7.
Est ce quèil existe une instruction pour reprendre la valeur initiale de n(10) au lieu d'utiliser la nouvelle valeur de n(7).
merci
A voir également:
- Plus grand diviseur premier
- Trier du plus petit au plus grand excel - Guide
- Photo insta en grand - Guide
- Signe plus grand que clavier ✓ - Forum Windows Vista
- Comment inséré les signes > et< avec un clavier qwerty ✓ - Forum Windows 8 / 8.1
- Pourquoi certaines personnes apparaissent en premier sur messenger ✓ - Forum Facebook
1 réponse
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
ne suffit-il pas d'ajouter une variable, par exemple
ne suffit-il pas d'ajouter une variable, par exemple
ninitial?
def plus_grand_diviseur_premier(n): n_initial=n for i in range(1,n+1): while est_premier(n)==False and n_initial%i!=0: n=n-1 return net pour
j'ai obtenu 10 alors que 10 n'est pas premier
si tu veux comprendre ce que fait le code que tu as écrit, ajoute des print().