Programme de calcul du pgcd [Fermé]

Signaler
Messages postés
31
Date d'inscription
jeudi 25 octobre 2001
Statut
Membre
Dernière intervention
8 novembre 2001
-
 OPTIMUS -
avez vous déjà essayé de faire le programme de clcul du pgcd en C++, ou meme en algorithmie ?
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

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);
}
25
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 61806 internautes nous ont dit merci ce mois-ci

ca fait beaucoup de lignes ca :(
c'est pas énorme, j'ai aussi 15 ans, merci pour le petit bout de code. je fait de des programme en console(pour l'instant), j'ai fait un pendu, un pgr pour les fonction affine, de référence
mais pour un programme de calcul de coord de vecteur sous forme fractionnaire, je n'arivais pas a faire une fonction PGCD, ce qui est embetant car quand il y a des grosse franction... ca fait a la fin du genre
AB ( 15/3000 ; 90 /3000 )
tu as choisis n1 et dividende de meme pour n2 et diviseur, je pense c mieux si on neglige n1 et n2
merci beaucouuuuuuuuuup
Voici une autre methode tres simple :

#include <stdio.h> 
#include <conio.h>
main() 
{ 
int a,b,pgcd; 
 

printf ("Donner a : "); 
scanf ("%d",&a); 
printf ("Donner b : "); 
scanf ("%d",&b); 
do
   {
 if(a>b)
 a=a-b;
 else
 b=b-a;
   } 
 while(a!=b);
 pgcd=a;                                                  /* on peu mettre :  pgcd=b; */
printf (" Le PGCD est : %d\n",pgcd);
getche();
}



example :

If a=15 , b=5
alors b<a a=10 , b=5
b<a a=5 , b=5 alors pgcd=5
Merci Hamzasq pour cette version de ce calcul assez enervant!!

je vous conseille, pour ceux a qui sa inetresse de créer des prgrammes, d'aller vois sur

https://openclassrooms.com/fr/

bref, essayez , vous allez vois c'est sympa!!

et moi je comprends tout, j'ai 13 ANS!!!!

^_________^
Messages postés
2782
Date d'inscription
jeudi 17 janvier 2008
Statut
Contributeur
Dernière intervention
14 novembre 2010
292
Si a = b, ton algorithme entre dans une boucle infinie.

Je viens d'essayer ;+)

De plus, ça donne un code pas optimisé du tout (mais portable à souhait).
Dsl Grunt, mais cet algo est tres interressant sur des petits nombres.
Une soustraction, ca a moin de latence qu'un modulo (x20) et en plus c'est pipelinable et tu as plus d'unite de calcul dedie.
ca ne peu pas etre parfait du premier coup^^
Bonjour, j ai atteri par hasard sur ce forum et j aiessayé de faire le programme de calcul de pgcg
LE voici en quelques lignes en version c++(fonction )
//---------------------------------------------------------------------------
 #include<iostream>
#include <vcl.h>
#pragma hdrstop
      using namespace std;

//programme qui renvoie le pgcd de x et y---------------------------------------------------------------------------

#pragma argsused
int pgcd(int x,int y);
int main(int argc, char* argv[])
{ int x,y,temp;//temp est le nom associé au resultat
cout<<"Ce programme determine le pgcd de 2 nombres x et y"<<endl;
cout<<"Entrez le nombre x: ";
cin>>x;
cout<<"Entrez le nombre y: ";
cin>>y;
temp=pgcd(x,y);//Voir commentaire sur temp ci-dessus
cout<<"Le pgcd de "<<x<<" et "<<y<<" est "<<temp<<endl;
system("pause");
        return 0;
}
int pgcd(x,y)
{
if (y==0)
return x;
else return pgcd(y,x%y);
}
//---------------------------------------------------------------------------
eheh, facile ! ;))

et pour le challenge, qui veut tenter l'algo qui donne le pgcd de deux polynomes de degré indéterminé ?

c'était le sujet d'un de mes projets l'année dernière, c'est marrant tout plein ! ;)

Yoann

PS : pour ceux que ça intéresse je peux fournir la solution avec un dossier complet
Utilisateur anonyme > yaubi
moi ça m'intéresse yaubi. C'est très gros? c'est dans quel format? papier ou électronique?
> yaubi
dans un premier temps, voici la version en ligne
http://aubineau.yoann.free.fr/supinfo/prepa2/pgcd/dossier.htm

je t'enverrai plus tard la version .doc ou .pdf, comme tu veux

Yoann
Merci b1 mon frère ,ca marche
Messages postés
1
Date d'inscription
samedi 18 mai 2013
Statut
Membre
Dernière intervention
18 mai 2013

pour les gens qui cherchent encore ce programme en C++ :



#include<stdio.h>
#include<conio.h>

int pgcd(int a, int b)
{
int rest;
while (b != 0)
{
rest = a%b;
a = b;
b = rest;
}
return a;
}

main()
{
int a,b;
char rep[5];
printf("appuyer sur une touche pour continuer ... \n");
scanf("%s",&rep);
while(rep[5]=!0)
{

printf("donner les valeurs de a est b \n");
scanf("%i %i",&a,&b);
if(a>b)
{
printf("le PGCD de %d et %d est: %i ",a,b,pgcd(a,b));

printf("\n");
printf("appuyer sur une touche pour executer le programme de nouveau ! \n");
scanf("%s",&rep);
}
}

getch();
}
Lol té serieux ? rassur moi tu blague ?
J'ai vérifier vos programme alors je peu dire que kingsyother le tien est a réviser mais par contre hamzasq le tien et très juste!
Messages postés
3
Date d'inscription
jeudi 7 mars 2013
Statut
Membre
Dernière intervention
7 mars 2013

jai bésoin du code en delphi d'une calculatrice
J'ai la réponse à vos questions car ce programme je l'ai fait en seulement 8 conditions (sans compter les petits détails du style enregistrer le calcul) !

J'ai 14 ans et je suis en 3ème. J'en avais marre de prendre 3 heures pour mes exos de maths rien que pour taper tous les calculs à la calculette pour le PGCD. Alors il m'est venu l'idée de faire un programme qui fait les devoirs à ma place et j'ai juste à copier les réponses ! Mon application est capable de calculer le PGCD en détail en utilisant soi l'algorithme d'Euclide, soi les soustractions successives.

Pour télécharger mon chef-d'oeuvre, cherchez Hundersoft sur Google, vous allez tomber sur Hundersoft France et ce sera directement sur la page d'accueil normalement.

C'est très simple : d'abord j'ai créé 4 valeurs modifiables que j'ai nommé
- Dividende
- Diviseur
- Quotient
- et Reste

Au départ, lors de l'appuis de la touche Entrée, Dividende deviens le plus grand des deux nombres à calculer et diviseur le plus petit. (par exemple pour PGCD(1456;325), Dividende=1456 et Diviseur=325).

Et tous les dixièmes de secondes, les valeurs changent.
- Dividende prend la valeur courante de Diviseur
- Diviseur prend la valeur courante de Reste
- Quotient prend le résultat de Dividende/Diviseur
- Reste prend le résultat de Dividende-Diviseur*Quotient

Et tous les dixièmes de seconde ça recommence.
Attention à suivre cet ordre précis ! Sinon ça va aller de travers !
Et à chaque fois (à chaque dixième de seconde), une liste ajoute une ligne qui affiche les calculs.
Quand Reste=0, il s'arrête et conclut que le PGCD est le dernier diviseur.

Voilà j'espère que t'a tout compris !
Bien sûre, je n'ai pas détaillé comment j'ai fait l'interface graphique !

Le code de lama est intéressant.

Je l'ai repris (tout le mérite lui reviens donc) et l'ai mis en C++. Voilà ce que cela donne :



#include < iostream &gr;
using namespace std;

int main()
{
int reste(1);
int n1, n2, dividende, diviseur;

cout << "N1 = ";
cin >> n1;

cout << "N2 = ";
cin >> n2;

dividende = n1;
diviseur = n2;

while(reste!=0)
{
reste = dividende%diviseur;
dividende = diviseur;
diviseur = reste;
}

cout << "PGCD(" << n1 << ";" << n2 << ") = " << dividende << ".";

return 0;
}
merci pour le programme c'est vraimment utile pour nous