Algorithme d'Euclide
Publié : 04 déc. 2019 18:51
Bonjour,
Enoncé : Créér une fonction qui reçoit deux entiers naturels a et b et qui renvoie leur pgcd.
J'ai fait le programme suivant, qui ne fonctionne pas. J'aimerais savoir pourquoi :
def pgcd(a,b) :
while (b!=0) :
a=b
b=a%b
return a
J'ai essayé de l'appliquer pour a=8 et b=3. Si je déroule j'ai, puisque b différent de 0 :
a prend la valeur 3 puis b prend la valeur 2. 2 différent de 0 donc je continue et ainsi de suite. Pourquoi faudrait-il introduire une variable supplémentaire ?
Enfin, dans la correction (que je ne comprends pas) ils posent : a ,b=b, a%b
Que signifie-t'elle ?
Quelques questions supplémentaires : on est d'accord que l'ordre d'attribution des variables est à prendre en compte : par exemple si j'ai trois variables a,b,c, et que je pose
a=b
b=c, je n'aurai pas le même résultat que si je faisais =
b=c
a=b.
Est-ce une règle d'introduire print plutôt que return pour renvoyer des phrases : ex print "le gain est de", euro"
Quand je cherche à déterminer par un algorithme si un nombre est parfait et que je pose L=diviseurs (n) :
1) Si j'ai déjà écrit le programme des diviseurs de n plus haut, faut-il re-spécifier que L est la liste les diviseurs de n, où Python le reconnait, étant donné qu'on avait fait return L
2) Quand j'écris (Return sumL==2n), Python regarde si c'est vrai ou faux et répond en booléen ?
Merci d'avoir pris le temps de lire !
Enoncé : Créér une fonction qui reçoit deux entiers naturels a et b et qui renvoie leur pgcd.
J'ai fait le programme suivant, qui ne fonctionne pas. J'aimerais savoir pourquoi :
def pgcd(a,b) :
while (b!=0) :
a=b
b=a%b
return a
J'ai essayé de l'appliquer pour a=8 et b=3. Si je déroule j'ai, puisque b différent de 0 :
a prend la valeur 3 puis b prend la valeur 2. 2 différent de 0 donc je continue et ainsi de suite. Pourquoi faudrait-il introduire une variable supplémentaire ?
Enfin, dans la correction (que je ne comprends pas) ils posent : a ,b=b, a%b
Que signifie-t'elle ?
Quelques questions supplémentaires : on est d'accord que l'ordre d'attribution des variables est à prendre en compte : par exemple si j'ai trois variables a,b,c, et que je pose
a=b
b=c, je n'aurai pas le même résultat que si je faisais =
b=c
a=b.
Est-ce une règle d'introduire print plutôt que return pour renvoyer des phrases : ex print "le gain est de", euro"
Quand je cherche à déterminer par un algorithme si un nombre est parfait et que je pose L=diviseurs (n) :
1) Si j'ai déjà écrit le programme des diviseurs de n plus haut, faut-il re-spécifier que L est la liste les diviseurs de n, où Python le reconnait, étant donné qu'on avait fait return L
2) Quand j'écris (Return sumL==2n), Python regarde si c'est vrai ou faux et répond en booléen ?
Merci d'avoir pris le temps de lire !