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