PGCD de deux nombres

Shakan972 Messages postés 43 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 17 avril 2015 - 17 avril 2015 à 16:42
Shakan972 Messages postés 43 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 17 avril 2015 - 17 avril 2015 à 16:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/61252-pgcd-de-deux-nombres

Pas trop mal, mais on peut faire mieux !
Voici en perl la fonction qui calcul le pgcd de n nombre :) :

sub pgcd
{
my ($a,$b,@rest)=@_;
if($a==0 or $b==0)
{return(-1)} #Si a ou b à 0, modulo impossible. A vous de voir comment vous gérez cette erreur.
if ($a % $b==0)
{
if(defined(@rest))
{
return pgcd($b,@rest);
}
else
{
return $b;
}
}
else
{
if(defined(@rest))
{
return pgcd($b, $a % $b, @rest);
}
else
{
return pgcd($b, $a % $b);
}
}
}


J'ai écrit cette fonction par-ce que j'en ai eu besoin dans un prog qui prend en entrée X fréquences de signaux carrés, et retourne en sortie la valeur du plus grand temps échantillonnage permettant de recomposer un signal carré dont la fréquence peut varier parmi les X fréquences précédemment choisi.

Je ne m'attendais pas à devoir utiliser un jour le pgcd dans un cas pratique ^^

En espérant avoir été utile à quelqu'un,
Thomas D.
Rejoignez-nous