begin process at 2012 02 12 07:22:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > PGCD RÉCURSIF

PGCD RÉCURSIF


 Information sur la source

Note :
Aucune note
Catégorie :Application Niveau :Débutant Date de création :16/01/2003 Date de mise à jour :16/01/2003 09:40:45 Vu :5 219

Auteur : loraine9999

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

calcul du PGCD en récursif

* Remarques : le pgcd de 2 nombres a et b, avec a >=b, peut etre défini de la
                facon suivante :  il est egal a b si b divise a.
                                    sinon il est egal au pgcd de 'b' et de 'a mod b'

Source

  • #pragma hdrstop
  • #pragma argsused
  • #include <conio.h>
  • #include <iomanip.h>
  • #include <iostream.h>
  • int pgcd(int a, int b) ;
  • void main(void)
  • {
  • int nb1, nb2 ;
  • int ret ;
  • cout << "entrez le 1er nombre : " ;
  • cin >> nb1 ;
  • cout << endl << "entrez le 2eme nombre : " ;
  • cin >> nb2 ;
  • ret = pgcd(nb1, nb2) ;
  • cout << endl << "le pgcd de " << nb1 << " et " << nb2 << " est : " << ret ;
  • cout << endl << endl << "appuyer sur une touche pour terminer..." ;
  • getch() ;
  • }
  • //---------------------------------------------------------------------------
  • int pgcd(int a, int b)
  • {
  • if (a % b == 0)
  • return b ;
  • return pgcd(b, a % b) ;
  • }
#pragma hdrstop

#pragma argsused

#include <conio.h>
#include <iomanip.h>
#include <iostream.h>

int pgcd(int a, int b) ;

void main(void)
    {
    int nb1, nb2 ;
    int ret ;

    cout << "entrez le 1er nombre : " ;
    cin >> nb1 ;

    cout << endl << "entrez le 2eme nombre : " ;
    cin >> nb2 ;

    ret = pgcd(nb1, nb2) ;

    cout << endl << "le pgcd de " << nb1 << " et " << nb2 << " est : " << ret ;

    cout << endl << endl << "appuyer sur une touche pour terminer..." ;
    getch() ;
    }
//---------------------------------------------------------------------------

int pgcd(int a, int b)
    {
    if (a % b == 0)
        return b ;

    return pgcd(b, a % b) ;
    }



 Sources du même auteur

MULTIPLICATION MATRICES
SYRACUSE
PAIR-IMPAIR RÉCURSIF
Source avec Zip FIBONACCI RÉCURSIF
Source avec Zip FACTORIELLE D'UN NOMBRE (RÉCURSIF)

 Sources de la même categorie

Source avec Zip Source avec une capture CONTACTS MANAGER par eapaceinfo
Source avec Zip Source avec une capture CONTACTES BOOK par mature
Source avec Zip Source avec une capture [C++/QT] SLIDEALWAYS, RÉALISEZ DES SLIDES POUR VOTRE SITE AV... par doderic
Source avec Zip Source avec une capture MAILLAGE 3D (VTK + QT) par ammoun007
Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10

Commentaires et avis

Commentaire de cmarsc le 16/01/2003 11:06:04

#pragma hdrstop  #pragma argsused sont - ils indispensables
#include &lt;iomanip.h&gt; ne sert pas à grand chose
void main(void) return ;

Commentaire de GoldenEye le 16/01/2003 16:32:28

Mêmes remarques que mon collègue.
Petite astuce d'optimisation : tu sais que l'opération modulo est très coûteuse en termes de temps de calcul dans la mesure où elle fait intervenir une division. Or tu calcules deux fois a%b dans ta fonction PGCD. Sauve le premier calcul dans une variable auxiliaire que tu réutiliseras afin de ne pas refaire le même calcul une seconde fois

int pgcd(int a, int b)
    {
    int temp;
    if ((temp=a % b) == 0)
        return b ;

    return pgcd(b, temp) ;
    }

Par ailleurs, tu m'as l'air d'être un(e) maniaque de la récursivité (c'est peut-être ton programme actuel de cours :-)). Si l'élégance de la méthode est incontestable, ses performances le sont moins (sauf dans des cas particuliers. En l'occurence ici, la méthode itérative du calcul de PGCD (l'algorithme d'Euclide) est plus performante.

Voilà pour cette fois

Commentaire de GoldenEye le 16/01/2003 16:36:12

Autre chose, vive la compacité du C:

int pgcd(int a,int b)
{
int temp;
return((!(temp=a%b))?b:pgcd(b,temp));
}

Juste pour le clin d'oeil ;-)

Commentaire de loraine9999 le 16/01/2003 18:12:18

hé oui c est la récursivité en puissance en cours ces temps ci alors je fais partager... ;-)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,607 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales