PGCD de deux nombres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 33 272 fois - Téléchargée 8 fois

Contenu du snippet

sub pgcd{
    $a=@_[0];
    $b=@_[1];
    if ($a % $b==0){
        return $b;
    }else{
        return pgcd($b, $a % $b);
    }
}


Compatibilité : Perl

Disponible dans d'autres langages :

A voir également

Ajouter un commentaire

Commentaire

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.

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.