MATH_PGCD    [Arithmetique]

Par Antoine Galmiche (Math4D v1)
Nouvelle recherche
Si (Faux)
   ` MATH_PGCD [Antoine Galmiche 07/2002]
   ` ---------------------------------------------
   ` Rappels mathématiques :
   ` PGCD = Plus Grand Commun Diviseur
   ` S'il est égal à 1, les deux nombres sont premiers entre eux :
   ` ils n'ont pas de diviseurs commun
   ` La méthode utilise l'algorithme d'Euclide
   ` Rappelons que PGCD x PPCM = produit
   ` ---------------------------------------------
   ` MATH_PGCD (Nombre1;Nombre2) -> Numérique
   ` Nombre1 (Numérique)
   ` Nombre2 (Numérique)
   ` Résultat (Numérique) PGCD de Nombre1 et Nombre2
   ` ---------------------------------------------
   ` MATHERROR
   ` 0 -> Pas d'erreur
   ` -1 -> Un des paramètres au moins est hors définition
   ` ---------------------------------------------
   ` EXEMPLES
   ` 12 = 2 x 2 x 3
   ` 50 = 2 x 5 x 5
   ` 51 = 3 x 17
   ` 52 = 2 x 2 x 13
   ` 53 premier
   ` MATH_PGCD (12;50) -> 2
   ` MATH_PGCD (12;51) -> 3
   ` MATH_PGCD (12;52) -> 4
   ` MATH_PGCD (12;53) -> 1 premiers entre eux
   ` 
Fin de si 

C_ENTIER LONG(MATHERROR)
C_ENTIER LONG($1;$2;$0)
$0:=0

  ` Traitement des erreurs
Au cas ou 
 : (($1<=0) | ($2<=0))
 MATHERROR:=-1
Sinon 
 MATHERROR:=0
Fin de cas 

  ` Algorithme
Si (MATHERROR=0)
 C_ENTIER LONG($a;$r)
 $a:=$1
 $0:=$2
 
 Repeter 
  $r:=$a%$0
  Si ($r#0)
   $a:=$0
   $0:=$r
  Fin de si 
 Jusque ($r=0)
Fin de si