CALCUL DU PLUS GRAND COMMUN DIVISEUR (PGDC)

loutremasquee Messages postés 7 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 4 août 2004 - 17 juin 2004 à 12:28
cs_ousta Messages postés 95 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 2 juin 2007 - 10 août 2004 à 10:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23748-calcul-du-plus-grand-commun-diviseur-pgdc

cs_ousta Messages postés 95 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 2 juin 2007
10 août 2004 à 10:41
euclide est moins rapide que lalgorithme que loutremasquee propose
while(b!=0)
{
c=a%b;
a = b;
b = c;
}
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
11 juil. 2004 à 22:34
Un algorithme très simple et assez performant que tu pourrais mettre en place pour le calcul de ton PGDC est la formule d'Euclide; informellement, voici ce qu'elle dit :

si a > b alors PGDC(a, b) = PGDC(a-b, b)
PGDC(a, a) = a

Voilà, bonne chance.
Bidou
loutremasquee Messages postés 7 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 4 août 2004
17 juin 2004 à 16:39
La norme ISO est un ensemble de normes regissant l'informatique. En gros ca dis "ca c bien ca c pas bien" pour ce qui est de la prog :-P. ca fixe egalement d'autres types de normes evidemment mais passons. Du coup le goto (et n'importe quelle instruction commencant par go en fait a peu de chose pres) est banni du fait que mm si ca s'avere tres pratique, ca devient assez rapidement un bordel monstrueux quand on l'utilise, et reprendre un code peut se transformer en une vraie croisade. D'une maniere general on ne l'emploi que pour sortir d'un niveau superieur a 2 boucles imbriquees en cours d'execution, et mm là encore si possible il faut faire une utilisation des break tant que c'est faisable.
Un petit detail encore : les while, if then else, for et consors sont appele instruction et non pas boucle de flux, mais ca c de la terminologie et je suis peut etre deja has been dans ce domaine :-P
walteau Messages postés 23 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 13 janvier 2007
17 juin 2004 à 13:49
Pour loutremasquee : j'ai fait les modifications nécessaires , c'est vrai que je n'est pas pensé a la boucle de flux while :D
Pourrai tu me dire ce qu'est la norme ISO ( Le format des images de Cd???, non je croi pas ;-) )
Merci de tes conseils

Walteau
loutremasquee Messages postés 7 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 4 août 2004
17 juin 2004 à 12:28
Bon evidemment y a qq petites choses a reprendre mais rien de bien mechant.
Tout d'abord ce que tu appelle "classe de calcul" n'est pas ta classe, mais ta methode appartenant a ta classe. Ta classe c'est Form1 :-D
Ton goto est a eviter, car cette structure n'est pas ds la norme ISO.... ne soyons pas sectaire, le goto c'est bien pratique parfois, mais tant que possible il faut l'eviter. Donc il vaut mieux faire une boucle tant que. ca deviendrai :
while(b!=0)
{
c=a%b;
a = b;
b = c;
}
A part ca rien a redire, a part evidemment qu'il existe des algo plus performant mais ce ne sont pas des maths de ton nivo pour l'instant, et que je ne suis pas sur que tu ais compris le concept objet (cf ta methode que tu appelles classe) mais bon y a que ceux ki ne font rien ki ne se trompent jamais ;-)
Bonne continuation
Rejoignez-nous