Programme de calcul du pgcd
OPTIMUS -
Et ben essayé !
En faite , je suis pas un crack en c++ , j'ai que 15 ans .
Masi en faisant le programme de calcul du pgcd je part dans plein de
IF a > B
plein de condition et le programme devient impossible !
Pouvez vous essayé de faire une algo simple ou un prog en c++ ?
merci d'avance ...
6 réponses
Plusieurs participants abordent la création d’un programme de calcul du PGCD en C++ ou en algorithmie, le problème étant d’éviter l’encombrement par de nombreuses conditions et boucles. La meilleure réponse présente l’algorithme d’Euclide itératif en C, puis une version en C utilisant une boucle while et les opérations modulo pour déterminer le PGCD rapidement. D’autres interviennent avec une méthode par soustractions successives simple mais moins efficace, une version récursive et même des remarques sur les cas limites comme a égal b qui peuvent créer des boucles. En complément, certains évoquent des variantes pédagogiques et des cas particuliers (négatifs, zéro, polynômes) et suggèrent d’expérimenter plusieurs implémentations pour comparer performances et robustesse.
-
En quelques lignes, ça marche:
Algo
Début
reste <-- 1
ecrire (' N1= ')
lire (n1)
ecrire (' N2= ')
lire (n2)
dividende <-- n1
diviseur <-- n2
#tant que reste <> 0 faire
reste <-- dividende mod diviseur
dividende <-- diviseur
diviseur <-- reste
Fin tant que
ecrire (' Le PGCD de ',n1,' et ',n2,' est ',dividende)
Fin
En C
#include <stdio.h> void main() { int reste; int n1,n2,dividende,diviseur; reste = 1; printf (" N1= "); scanf ("%d", &n1); printf (" N2= "); scanf ("%d", &n2); dividende=n1; diviseur=n2; while (reste!=0) { reste=dividende%diviseur; dividende=diviseur; diviseur=reste; } printf (" Le PGCD de %d et %d est %d",n1,n2,dividende); }