[fonction récursive] determiner le pgdc de deux nombres

Soyez le premier à donner votre avis sur cette source.

Vue 13 519 fois - Téléchargée 139 fois

Description

J'avais besoin de determiner le PGCD de 2 nombres, j'ai voulu le faire avec une fonction recursive, elle marche très bien donc je la mets à dospisition ici, ca peut toujours servir même si ca mange pas de pain ^_^.

Source / Exemple :


<?php
	/**************************************************
			Calcul du pgcd de deux nombres

                                                                                                    • /
function diff($n1,$n2) { $tablo = array($n1,$n2,abs($n1-$n2)); sort($tablo,SORT_NUMERIC); return $tablo; } function PGCD($n1,$n2) { if(is_int($n1) && is_int($n2)) { $tablo=diff($n1,$n2); if($tablo[0]>0) { return PGCD($tablo[0],$tablo[1]); } else { return $tablo[1]; } } } ?>

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
302
Date d'inscription
samedi 22 octobre 2005
Statut
Membre
Dernière intervention
2 novembre 2008
4
Hello j'ai moi même codé une fonction recursive pour le PGCD de deux nombre mais qui affiche les étapes si ça interesse :

http://www.phpcs.com/codes/PGCD-ALGORITHME-EUCLIDE-RECURSIVITE_39603.aspx
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
à mon avis, le is_int doit se faire dans une première fonction (fonction de lancement) et le reste dans une seconde fonction (fonction de calcul) histoire de faire moins de vérifications de type
Messages postés
130
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
19 avril 2009

Ah ui c'est pas mal, dans tout les cas il y a toujours la fonction php qui fait ca tres bien aussi ^^
Messages postés
1804
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
22 septembre 2009
4
Yep ;)
No pb de toute facon, c'est marrant de voir des fonctions récursives héhé ^^
Voici une version itérative d'Euclide qui a l'air de marcher pour ceux que ca intéresseraient :
function pgcd_($a,$b) {
for($c = $a % $b ; $c != 0 ; $c = $a % $b) { $a = $b; $b = $c; }
return $b;
}
Messages postés
130
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
19 avril 2009

Pitite mise à jour, effectivment cette méthode est celle des soustractions successives :$ j'ai confondu les deux algos, autant pour moi ^^
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.