Programme de calcul du pgcd [Fermé]

Messages postés
31
Date d'inscription
jeudi 25 octobre 2001
Statut
Membre
Dernière intervention
8 novembre 2001
- - Dernière réponse :  OPTIMUS - 26 mars 2016 à 21:36
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 ...
Afficher la suite 

6 réponses

Meilleure réponse
24
Merci
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);
}

Dire « Merci » 24

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

CCM 60284 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
9
Merci
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

http://www.siteduzero.com

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

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

^_________^
Grunt
Messages postés
2783
Date d'inscription
jeudi 17 janvier 2008
Statut
Contributeur
Dernière intervention
14 novembre 2010
279 -
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^^
4
Merci
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);
}
//---------------------------------------------------------------------------
1
Merci
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
simon666
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 ?
1
Merci
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!
STEF DOP
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
1
Merci
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