begin process at 2012 02 15 10:00:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > PGCD : ALGORITHME D'EUCLIDE PAR RECURSIVITÉ

PGCD : ALGORITHME D'EUCLIDE PAR RECURSIVITÉ


 Information sur la source

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :euclide, algorithme, division, sucessive, pgcd Niveau :Débutant Date de création :17/09/2006 Date de mise à jour :17/09/2006 18:06:57 Vu :13 948

Auteur : iow4

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

 Description

Il existe une fonction pour trouver le PGCD je vous en propose une autre ici.
Cette fonction est recursive et ecrit les étapes intermediaires jusqu'a vous donner le PGCD d'un nombre

Source

  • <?php
  • function pgcd($diviseur,$reste)
  • {
  • //
  • // Verifie si le reste est egal a 0 si oui on a trouvé le PGCD
  • //
  • if ($reste == 0)
  • {
  • echo "<b>PGCD :</b>$diviseur";
  • }
  • //
  • // Sinon on continu de le chercher
  • //
  • else
  • {
  • echo "$diviseur/$reste = ".intval(abs($diviseur/$reste))." reste ".$diviseur%$reste."<br />";
  • pgcd($reste,$diviseur%$reste); // recursivité
  • }
  • }
  • echo 'PGCD('.$_GET['nbr1'].';'.$_GET['nbr2'].')<br /><br />';
  • echo max($_GET['nbr1'],$_GET['nbr2']).'/'.min($_GET['nbr1'],$_GET['nbr2']).' = '.intval(abs(max($_GET['nbr1'],$_GET['nbr2'])/min($_GET['nbr1'],$_GET['nbr2']))).' reste '.max($_GET['nbr1'],$_GET['nbr2'])%min($_GET['nbr1'],$_GET['nbr2']).'<br />';
  • pgcd(min($_GET['nbr1'],$_GET['nbr2']),max($_GET['nbr1'],$_GET['nbr2'])%min($_GET['nbr1'],$_GET['nbr2']));
  • ?>
<?php
function pgcd($diviseur,$reste)
{
    //
    // Verifie si le reste est egal a 0 si oui on a trouvé le PGCD
    //
    if ($reste == 0)
    {
        echo "<b>PGCD :</b>$diviseur";
    }
    //
    // Sinon on continu de le chercher
    //
    else
    {
        echo "$diviseur/$reste = ".intval(abs($diviseur/$reste))." reste ".$diviseur%$reste."<br />";
        pgcd($reste,$diviseur%$reste); // recursivité
    }
}

echo 'PGCD('.$_GET['nbr1'].';'.$_GET['nbr2'].')<br /><br />';
echo max($_GET['nbr1'],$_GET['nbr2']).'/'.min($_GET['nbr1'],$_GET['nbr2']).' = '.intval(abs(max($_GET['nbr1'],$_GET['nbr2'])/min($_GET['nbr1'],$_GET['nbr2']))).' reste '.max($_GET['nbr1'],$_GET['nbr2'])%min($_GET['nbr1'],$_GET['nbr2']).'<br />';
pgcd(min($_GET['nbr1'],$_GET['nbr2']),max($_GET['nbr1'],$_GET['nbr2'])%min($_GET['nbr1'],$_GET['nbr2']));
?>

 Conclusion

Ce script prend 2 parametres en GET :
nbr1 : qui est le premier nombre
nbr2 : qui est le deuxieme

Exemple d'appelle : script.php?nbr1=15&nbr2=5

Pour rapelle le PGCD est le plus grand commun diviseur

mon site : http://iow4.net


 Historique

17 septembre 2006 18:06:57 :
ajout d'explication sur les parametres GET

 Sources du même auteur

OUTIL DE SUPRESSION DE SPAM INTEGRÉ À PHPBB
ZONE MEMBRE EN SYMBIOSE AVEC LE FORUM PHPBB

 Sources de la même categorie

EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
CLEF POUR EAN 13 ET 14 par RaftY
FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N... par mtrix000
Source avec Zip Source avec une capture TRIANGLE DE PASCAL ET SON ÉQUATION par vendeeHdLR89
Source avec Zip CONVERTISSEUR LAMBERT2 ÉTENDU EN COORDONNÉE GÉOGRAPHIQUE (LO... par varfendell

 Sources en rapport avec celle ci

EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N... par mtrix000
Source avec Zip ALGORITHME D'EUCLIDE OU DIVISIONS SUCCÈSSIVES : CALCULE DU P... par canibale
DECOMPOSITION D'UN NOMBRE EN PUISSANCES DE FACTEURS PREMIERS... par DarkTyranus
Source avec Zip [FONCTION RÉCURSIVE] DETERMINER LE PGDC DE DEUX NOMBRES par Palleas_44

Commentaires et avis

Commentaire de Skreo le 25/09/2006 12:56:51

Dis moi tu serais pas en spé maths par hasard ? ^^

Commentaire de iow4 le 25/09/2006 17:36:19

Je suis en 3éme.
Je sais que cet algo est vraiment simple mais il illustre bien la recursivité !

Commentaire de Skreo le 26/09/2006 12:53:31

Ok, j'hésitais entre le fait que tu sois en 3ème ou en Terminale spé maths.
Car en spé maths on revoit le pgcd rapidement. Et comme malgré la simplicité du code, tu a l'air assez expérimenté...
Mais je pense que ta fonction peut-être encore beaucoup plus simple. Le problème c'est qu'elle ne se contente d'afficher un résultat.
Il faudrait qu'elle renvoit en plus les résultat, et mettre par exemple un argument optionnel permettant d'activer ou nom l'affichage des étapes.

Commentaire de iow4 le 01/10/2006 19:02:10

Si tu trouve le moyen d'en faire une plus simple je t'ecoute bien volontier.
Tu entends quoi par "resultat" ?

Les gens qui ne veulent pas voir les opérations intermediaire utilise la fonction de PHP toute faite.

Commentaire de Kevin007 le 01/10/2006 21:48:42

Bonsoir à toi, Iow4 !

En effet, je crois qu'il existe plus court ;=)
Je ne l'ai pas testé, car j'ai eu un crash de mon serveur Web... mais je te laisse l'essayer toi-même...

Elle devrait fonctionner, c'est un reste de ma vieille mémoire ;=) :

function greatest_common_divisor( $a, $b )
    {
         if ( is_int( $a ) && is_int( $b ) )
               {
                      return ( $a % $b ) ? greatest_common_divisor( $b, $a % $b ) : $b;
               }
     }

Bonne soirée à toi !
N'hésite pas à me dire si elle fonctionne ;=)

Commentaire de Skreo le 02/10/2006 18:01:47

Ouép je pensais à une fonction dans le genre ^^
Mais là tu calcules 2 fois le reste, tu devrais plutôt le stocker dans une variable :

function greatest_common_divisor($a, $b){
    if(!is_int($a) || !is_int($b)) return false;
    $reste = $a%$b;
    return $reste==0 ? $b : greatest_common_divisor($b, $reste);
}

Commentaire de iow4 le 24/10/2006 20:18:41

Le but principale de cette source est de retourner toutes les étapes nécessaires à l'obtension du PGCD, il faut donc afficher les étapes intermediaire ( pas fait dans votre source )

Merci quand même de votre participation ;-)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

division [ par eax ] salutje fais une division et j'affiche le résultat avecprintf("%2.3f", $test);mais lorsque le résultat est un entier, il m'affiche ,0 derrière, bon d' Algorithme de tri ... [ par LocalStone ] Salut à tous ! Il y a peut-être 1 mois et demi, j'ai lu un article - ou plutôt un tutorial - sur comment mettre en place un algorithme de tri automati Algorithmique ... [ par LocalStone ] Salut &#224; tous ...Alors voil&#224;, j'ai eu une id&#233;e et je cherche des personnes suc&#233;ptibles de pouvoir m'aider &#224; cr&#233;er une tel Limiter les décimales du résultat d'une division [ par pierki ] Je cherche a supprimer les d&#233;cimales du r&#233;sultat d'une division.Comment faire ?pierkiz aide pour un algorithme ! [ par shaoling ] Bonjour, j'ai une &#233;nigme &#224; r&#233;soudre, et pour cela je compte bien m'aider du php ! Voici l'&#233;nigme :Pour la somme de 5 euros, on a a Division dans une requête SQL [ par Kevergeek ] Donc voil&#224; j'ai une base de donn&#233;es dont une table (montages) qui comporte une colonne (votes) qui contient 2 nombres s&#233;par&#233;s par Combinaison, algorithme combinatoire, algo de boole [ par pssinjaune ] Bonjour a tous,je n'ai jamais étais une fleche en maths, je dois developper un algorithme qui permet d'afficher toute les combinaisons possible de N é Aide algorithme Ladder (situation industrielle) [ par JoeBlo25 ] Bonjour, j'ai une situation a réaliser en Ladder mais je ne sais pas par ou commencer (je suis débutant). J'ai 2 réservoirs allimentés par une décharg algorithme évolutionnaire [ par rafik077 ] bonjour, j'ai un projet sur létude comparative d'algorithme évolutionnaire(algorithme génétique).j'ai besoin de code c++ de méthodes drmoga et méthode Cherche algorithme de devinette [ par ycochard ] Bonjour,Je cherche l'algorithme qui se trouve derrière ce petit jeu :http://www.akinator.com/aki_fr/ (attention les yeux, ça flashe)Vous savez comment


Nos sponsors


Sondage...

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 : 2,200 sec (4)

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