Plus grand diviseur premier
sk_
Messages postés
15
Statut
Membre
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 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
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
ne suffit-il pas d'ajouter une variable, par exempleninitial
?