Cálculo del Máximo Común Divisor

La subrutina normalise llama a _hcf (del inglés highest common factor o en español máximo común divisor) para permitir la reducción de la fracción:

sub _hcf {
  my ($x, $y) = @_;
  ($x, $y) = ($y, $x) if $y > $x;
  return $x if $x == $y;
  while ($y) {
    ($x, $y) = ($y, $x % $y);
  }
  return $x;
}

La subrutina _hcf es ''puro cálculo'' por lo que la implementación Perl es obviamente inferior en rendimiento a la correspondiente versión C:

$ cat -n hcf.c
 1  int hcf(int x, int y) {
 2    int t;
 3
 4    if (y > x) {
 5      t = x; x = y; y = t;
 6    }
 7    if (x == y) return x;
 8    while (y) {
 9      t = x;
10      x = y;
11      y = t % y;
12    }
13    return x;
14  }

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19